JBoss: el archivo WAR en EAR no puede encontrar la biblioteca JAR en classpath
Estoy teniendo problemas para desplegar un oído con guerras, archivos y archivos de configuración (archivos .properties) en JBoss 4.3-eap. Aquí está mi estructura de la oreja:
+app.ear
+lib
*.jar libraries that the war's use
+classes
*.properties and other configuration files
+META-INF
application.xml
jbos-app.xml
app.war
app2.war
appn.war
Tengo lo siguiente en mi jboss-app.xml:
<jboss-app>
<jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>
Mi aplicación.xml se ve así:
<application id="app_id">
<display-name>App>/display-name>
<description>TheApp>/description>
<!--
<module id="core">
<java>lib/core.jar</java>
</module>
<module id="tag">
<java>lib/tag.jar</java>
</module>
-->
<module id="app">
<web>
<web-uri>app.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module id="app2">
<web>
<web-uri>app2.war</web-uri>
<context-root>/app2</context-root>
</web>
</module>
<module id="appn">
<web>
<web-uri>appn.war</web-uri>
<context-root>/appn</context-root>
</web>
</module>
<security-role id="secRole">
<description>users</description>
<role-name id="appRoleName">users</role-name>
</security-role>
<library-directory>lib</library-directory>
</application>
Básicamente, al desplegar el oído, me encuentro con un problema donde una de mis guerras no puede encontrar una clase en elcore.jar
expediente (java.lang.NoClassDefFoundErro
r). Creo que esto se debe al hecho de que la guerra no está encontrando esta biblioteca, a pesar de que está en ellib
carpeta / classpath. Si intento descomentar los dos primeros módulos para agregar las bibliotecas de la primera parte (core.jar
ytag.jar
), de repente, los archivos de propiedades ya no se pueden encontrar (se encuentran, por ahora, enlib/classes
, por lo que, espero que de todos modos, sean recogidos por el cargador de clases. Idealmente, me gustaría poner las clases en su propio directorio y agregarlas a la ruta de clases por separado, pero por ahora solo estoy tratando de hacer que esto funcione.
He intentado algunas otras cosas, incluyendo la adición manualcore.jar
a la guerramanifest.mf
archivo, cambiandoUseJBossWebLoader
a verdad en eljboss-service.xml
archivo bajo eljboss-web.deployer
, y varias combinaciones de los anteriores, sin éxito. O bien pierdo elclasses
directorio desde el classpath (lib
carpeta) y ninguno de mis archivos de propiedades se recoge, o la guerra no puede acceder a la clase adecuada desde el archivo jar. Creo que debe haber alguna configuración incorrecta, y aunque he intentado leer la forma en que JBoss realiza las implementaciones de EAR y la carga de clases, parece que no puedo adaptarla a mi configuración actual.
Cualquier sugerencia sería muy apreciada.
Aquí hay algunos sitios que he estado viendo:
Raible Designs JBoss ClassLoader Logic
Estos son solo algunos de los sitios que he visto. Los problemas también pueden deberse a la configuración del proyecto, ya que se trata de un gran proyecto establecido que, en cierta medida, se está migrando de una implementación de weblogic a Jboss. Entonces, si hay algo que DEBERÍA funcionar, pero no lo hace, podría ser un problema con parte de la configuración del código / proyecto. Desafortunadamente, aún no estoy en el punto en el que pueda decir si es un problema relacionado con JBoss o un problema con el proyecto.