6 Stimmen

Müssen gemeinsame JARs in einem EAR über verschiedene WARs hinweg wiederholt werden?

Ich habe eine JAR-Datei für die Autorisierung. Ich benötige sie für jede meiner WAR-Dateien. Alle WAR-Dateien sind in einer EAR-Datei verpackt. Muss ich diese gemeinsame JAR-Datei in jeder WAR-Datei wiederholen, oder gibt es eine Struktur für gemeinsame Bibliotheken?

Also sieht mein Beispiel ungefähr so aus...

big.ear
  - META-INF
    - MANIFEST.MF
    - application.xml
  - appl1.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique1.jar
        - unique2.jar
        - unique3.jar
        - common1.jar
    - jsps/html/etc
  - appl2.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique3.jar
        - unique4.jar
        - common1.jar
    - jsps/html/etc
  - appl3.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique5.jar
        - common1.jar
    - jsps/html/etc

Jede meiner WAR-Anwendungen kann common1.jar sehen, aber es ist in der EAR-Datei dreimal vorhanden.

Wo in der EAR-Struktur könnte ich common1.jar platzieren, damit appl1, appl2 und appl3 es sehen können, ohne es dreimal wiederholen zu müssen?

6voto

Olivier Punkte 1222

Der Standardweg besteht darin, die JARs im Stammverzeichnis Ihres EAR zu platzieren und sie im Class-Path-Attribut des META-INF/MANIFEST.MF der WARs zu referenzieren. Siehe diesen Artikel.

Überprüfen Sie die Dokumentation Ihres Containers, um sicherzustellen, dass dies unterstützt wird.

1voto

Strinder Punkte 1966

Es befindet sich in der JEE5-Spezifikation, Kapitel EE 8.2.1:

Eine .ear-Datei kann ein Verzeichnis enthalten, das Bibliotheken enthält, die in JAR-Dateien verpackt sind. Das library-directory-Element des .ear-Dateidaemons enthält den Namen dieses Verzeichnisses. Wenn kein library-directory-Element angegeben ist oder wenn die .ear-Datei keinen Bereitstellungsbeschreibung enthält, wird das Verzeichnis mit dem Namen lib verwendet.

-4voto

neesh Punkte 4948

Ihr App-Server sollte über einen Ordner wie shared/lib verfügen, in dem Sie JAR-Dateien ablegen können, die von mehreren Webanwendungen innerhalb der gleichen Instanz gemeinsam genutzt werden können.

0 Stimmen

Dies wird wahrscheinlich funktionieren, aber ich halte es für eine schlechte Praxis. Das EAR sollte eigenständig sein.

1 Stimmen

Definitiv eine schlechte Praxis. Was ist, wenn Sie dieses Glas aktualisieren möchten? Sie sollten dies mit einem Deployment können, Sie sollten das Server-Setup nicht ändern müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X