example datos configurar conexiones conexion java xml module wildfly xerces

java - datos - pool de conexiones jboss



xi: incluir en el archivo xml dentro del archivo jar no funciona en WildFly (2)

Depende de tu analizador XML.

Según su excepción, parece que usa SAX.
Pruebe este artículo: https://www.ibm.com/developerworks/library/x-tipentres/

El documento anterior utiliza la interfaz EntityResolver API SAX para localizar recursos en un documento XML.

Aquí está el escenario:

Incluí varios .xml (algo de una configuración) necesarios para que mi aplicación se ejecute en un archivo .jar . El archivo jar tiene la siguiente estructura:

settings-1.0.0.jar ˪ resources/ ˪ 1.xml ˪ 2.xml ˪ 3.xml ˪ META-INF/ ˪ MANIFEST.MF

1.xml tiene el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- Include 2 --> <xi:include href="resource:resources/2.xml" /> <!-- Include 3 --> <xi:include href="resource:resources/3.xml" /> <!-- <map> </map> --> </document>

basado en este artículo Al intentar acceder a estos incluye (después de implementar con éxito mi aplicación) aparece el siguiente error:

Caused by: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 43; An ''include'' failed, and no ''fallback'' element was found. at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:245) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:298) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121) at org.zcore.dkp.backend.mapper.MappingParser.parse(MappingParser.java:60) ... 327 more

Probé (y cometí un error) todas las opciones imaginables. ¿Cuál es la combinación correcta para xi:include un archivo .xml en un archivo jar instalado como módulo WildFly?

Editar : Así es como se carga xmlfile:

private void loadBackendMapping() { try { BackendMappingParser parser = new BackendMappingParser(); InputStream in = ResourceLoaderHelper.getResourceAsStream(BACKEND_MAPPING_RESOURCE); if (in == null) { throw new FileNotFoundException(); } try { parser.parse(in); } finally { try { in.close(); } catch (IOException e) { log.warn("Failed to close " + BACKEND_MAPPING_RESOURCE, e); } } backendMapping = parser.getMapping(); if (log.isDebugEnabled()) { log.debug(BACKEND_MAPPING_RESOURCE + " successfully loaded!"); } } catch (FileNotFoundException e) { log.warn("/"" + BACKEND_MAPPING_RESOURCE + "/" not found!"); backendMapping = new BackendMapping(); } catch (Exception e) { throw new CenterwareSystemException("Failed to parse " + BACKEND_MAPPING_RESOURCE, e); } }

BACKEND_MAPPING_RESOURCE contiene el nombre de archivo ( 1.xml ).


Elimine el prefijo "resource:" de sus URL, ya que este parece ser un protocolo específico de JBoss.

También emita la ruta "resource /", ya que 1.xml, 2.xml y 3.xml residen todos en la misma carpeta y generalmente se especifica la ruta relativa (de 1 a 2 y de 1 a 3).

Pruebe lo siguiente:

<?xml version="1.0" encoding="UTF-8"?> <document xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- Include 2 --> <xi:include href="2.xml" /> <!-- Include 3 --> <xi:include href="3.xml" /> <!-- <map> </map> --> </document>