JBoss – War-Bibliotheksabhängigkeiten

Ich versuche, einige Abhängigkeiten JAR-Dateien hinzuzufügen. Aber diese Dateien, wenn sie in lib/endorsed WEB_INF/lib.jar oder in WEB_INF/lib.jar zu einem Starterrors für jboss-Instanzen. Ich nehme an, das passiert, weil flache JBoss-Classloader-Struktur. Wenn jemand die Classloader-Einstellungen in jboss-web.xml implementiert hat

  com.example:archive=unique-archive-name  

Kann mir jemand ein reales Beispiel geben?

Auch wo sollte ich diese JAR-Dateien – lib/endorsed von jboss, oder lib Ordner im WEB_INF/lib Ordner oder in WEB_INF/lib

Die statement von Duffymo, die Gläser nicht zu verwenden, wird auf eigene Gefahr ignoriert.

In einigen zusätzlichen Details:

Das Platzieren von Bibliotheken in Ihrem WEB-INF / lib ist eine bewährte Methode für Portabilität und Konsistenz, da es sich an eine Standardvorschrift zum Erstellen autarker und verteilbarer Webarchive hält, aber Sie müssen genau auf die Deklaration für das Laden von classn achten in Ihre jboss-web.xml einfügen .

Angenommen, ein einfaches Szenario ohne die Ladeanweisung für die class und ein fiktives Beispiel.jar :

  • Wenn Sie example.jar in WEB-INF / lib platzieren und es nicht auch in jboss // lib vorhanden ist , dann ist example.jar nur für diesen bestimmten WAR sichtbar.
  • Wenn Sie example.jar in WEB-INF / lib platzieren und es auch in jboss // lib vorhanden ist , wird die Instanz in WEB-INF / lib im Wesentlichen ignoriert und die WAR verwendet den vereinheitlichten classnlader der JBoss-Serverinstanz zum Laden der Beispielklassen aus jboss // lib / example.jar . (Das gleiche gilt für alle anderen WARs oder EARs in derselben Serverinstanz, vorausgesetzt, dass classn nicht überschrieben werden.)

Die classnlade- Deklaration ist in Fällen erforderlich, in denen Sie zwei verschiedene Versionen von example.jar haben : – jboss // lib: example1.0.jar – WEB-INF / lib: example2.0.jar

In diesem Fall erstellt JBoss einen einzigartigen und isolierten classnlader für Ihren WAR, der jboss // lib / example1.0.jar zugunsten von WEB-INF / lib / example2.0.jar im Kontext Ihres WAR vermeidet .

Zusammengefasst: Wenn Sie nur eine WAR in der jboss-Serverinstanz ausführen und / oder keine widersprüchlichen JAR-Probleme haben, lassen Sie die Deklaration zum Laden von classn fallen und legen Sie Ihre JARs in jboss // lib ab . Dadurch wird die WAR-Datei leichter, die allgemeine Bereitstellung ist möglicherweise einfacher und Sie verbrauchen bei Hot-Deploy-Operationen keinen zusätzlichen Speicher mit zusätzlichen classnversionen.

Sie gehören in das Verzeichnis WEB-INF / lib Ihrer WAR-Datei. Legen Sie keine Dinge in den indossierten Ordner.