JBoss: WAR-Datei in EAR kann JAR-Bibliothek im Klassenpfad nicht finden
Ich habe ein Problem beim Bereitstellen eines EAR mit gebündelten Wars-, JAR- und Konfigurationsdateien (.properties-Dateien) auf JBoss 4.3-eap. Hier ist meine Ohrstruktur:
+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
Ich habe folgendes in meiner jboss-app.xml:
<jboss-app>
<jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>
Meine application.xml sieht so aus:
<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>
Grundsätzlich stoße ich beim Aufstellen des Ohrs auf ein Problem, bei dem einer meiner Kriege keine Klasse in der Welt findetcore.jar
Datei (java.lang.NoClassDefFoundErro
r). Ich denke, das liegt an der Tatsache, dass der Krieg diese Bibliothek nicht findet, obwohl sie sich im befindetlib
Ordner / Klassenpfad. Wenn ich versuche, die ersten beiden Module zu kommentieren, um die Bibliotheken der ersten Partei hinzuzufügen (core.jar
undtag.jar
Plötzlich können die Eigenschaftendateien nicht mehr gefunden werden (sie befinden sich vorerst inlib/classes
, so dass ich trotzdem hoffe, sie werden vom classloader abgeholt. Im Idealfall möchte ich Klassen in einem eigenen Verzeichnis ablegen und separat zum Klassenpfad hinzufügen, aber im Moment versuche ich nur, dies zum Laufen zu bringen.
Ich habe einige andere Dinge ausprobiert, einschließlich manuelles Hinzufügencore.jar
zum Kriegmanifest.mf
Datei, ändernUseJBossWebLoader
wahr in derjboss-service.xml
Datei unter derjboss-web.deployer
und verschiedene Kombinationen der oben genannten, ohne Erfolg. Ich verliere entweder dieclasses
Verzeichnis aus dem Klassenpfad (lib
Ordner) und keine meiner Eigenschaftendateien werden abgerufen, oder der Krieg kann nicht auf die richtige Klasse aus dem Glas zugreifen. Ich denke, es muss eine Konfiguration geben, die falsch ist, und während ich mich über die Art und Weise informiert habe, wie JBoss EAR-Bereitstellungen und das Laden von Klassen durchführt, kann ich sie scheinbar nicht an mein aktuelles Setup anpassen.
Anregungen wäre sehr dankbar.
Hier sind einige Websites, die ich mir angesehen habe:
Raible Designs JBoss ClassLoader Logic
Dies sind nur einige der Websites, die ich mir angesehen habe. Die Probleme könnten auch auf die Einrichtung des Projekts zurückzuführen sein, da es sich um ein großes etabliertes Projekt handelt, das (zu einem gewissen Grad) von einer Weblogic-Bereitstellung auf Jboss migriert wird. Wenn es also etwas gibt, das funktionieren SOLLTE, das aber nicht funktioniert, könnte dies ein Problem bei einigen Code- / Projektkonfigurationen sein. Leider bin ich noch nicht an dem Punkt angelangt, an dem ich feststellen kann, ob es sich um ein JBoss-Problem oder ein Problem mit dem Projekt handelt.