Ich habe ein Problem bei der Bereitstellung eines Ohrs mit gebündelten Wars-, Jar- und Konfigurationsdateien (.properties-Dateien) auf JBoss 4.3-eap. Hier ist meine Ohrstruktur:JBoss: WAR-Datei in EAR kann die JAR-Bibliothek im Klassenpfad nicht finden
+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 folgend in meinem jboss-app.xml:
<jboss-app>
<jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>
Meine application.xml wie folgt aussehen:
<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 auf Beim Einsetzen des Ohrs stoße ich auf ein Problem, bei dem einer meiner Kriege keine Klasse in der Datei core.jar
(java.lang.NoClassDefFoundErro
) finden kann. Ich denke, das liegt an der Tatsache, dass der Krieg diese Bibliothek nicht finden kann, obwohl sie sich im lib
Ordner/Klassenpfad befindet. Wenn ich die ersten beiden Module auskommentiere, um die ersten Partizipienbibliotheken hinzuzufügen (core.jar
und tag.jar
), können plötzlich die Eigenschaftendateien nicht mehr gefunden werden (sie befinden sich vorerst in lib/classes
, so dass ich hoffentlich trotzdem hoffe) Sie werden vom Classloader aufgenommen, idealerweise würde ich gerne Klassen in ein eigenes Verzeichnis einfügen und es dem Klassenpfad separat hinzufügen, aber im Moment versuche ich nur, dass dies funktioniert.
Ich habe ein paar anderen Dinge ausprobiert, darunter die manuelle Hinzufügen core.jar
auf den manifest.mf
Datei Krieg, UseJBossWebLoader
auf true in der jboss-service.xml
Datei unter den jboss-web.deployer
und verschiedenen Kombinationen des oben ändern, zu keinem Erfolg. Ich verliere entweder das Verzeichnis classes
aus dem Ordner Classpath (lib
) und keine meiner Eigenschaften-Dateien abgeholt, oder der Krieg kann nicht die richtige Klasse aus dem Glas zugreifen. Ich denke, es muss eine Konfiguration geben, die falsch ist, und während ich versucht habe, auf dem Weg zu lesen, wie JBoss EAR-Bereitstellungen und Classloading durchführt, kann ich es anscheinend nicht an meine derzeitige Konfiguration anpassen.
Alle Vorschläge würden sehr geschätzt werden.
Hier sind einige Websites, die ich habe bei der Suche:
Raible Designs JBoss ClassLoader Logic
Dies sind nur einige der Seiten, die ich angeschaut haben. Die Probleme können auch von der Einrichtung des Projekts herrühren, da es sich um ein großes, etabliertes Projekt handelt, das (zu einem gewissen Grad) von einer Weblogic-Bereitstellung zu Jboss migriert wird. Wenn also etwas funktioniert, das funktionieren sollte, aber nicht, könnte dies ein Problem mit der Code-/Projektkonfiguration sein. Leider bin ich noch nicht an dem Punkt, an dem ich feststellen kann, ob es ein JBoss-Problem oder ein Problem mit dem Projekt ist.
Das löste mein Problem! Danke vielmals! Ich möchte jedoch eine Nachfolgefrage stellen: Wenn ich diese Module zur application.xml hinzufüge, bedeutet das, dass ich die Eigenschaft class-path in den manifest.mf-Dateien der Kriege nicht brauche?Oder ist das nur der Fall, wenn ich das Attribut UseJBossWebLoader in jboss-web.deployer auf true setze? – Mike
Ich bin mir nicht sicher über das Manifest-Problem, ich habe das selbst nicht ausprobiert, ich verlasse mich immer auf den standardmäßigen flatternden Classloader. Wie für Ihre Formatierung, verwenden Sie nicht die Core/Pre-Tags, sie funktionieren nicht sehr gut. Verwenden Sie die Formatierungssymbole im Editor. – skaffman