Ich habe eine alte J2EE-Anwendung (J2EE 1.3), die in eine EAR verpackt, und in der EAR gibt es WARs und EJB JARs. Nun muss eines der EJB-JARs auf einige JARs von Drittanbieter-Bibliotheken verweisen. Was ist also der beste Ort, um diese JARs zu paketieren und wie?Wie packen Sie JARs von Drittanbietern in ein EJB-JAR?
Antwort
Sie gehen in die Ear-Datei, an der Wurzel oder Sie können ein Verzeichnis lib erstellen, um sie zu speichern. Jedes Projekt (EJB oder IST), die sie verweisen muss müssen sie in dem Class-Path enthalten: der Manifest-Datei.
Ear Inhalt
- log4j.jar
- lib
- commons-lang.jar
- MyEJBProj.jar
- MyWAR.war
MyEJBProj Inhalt
- classes
- META-INF
- MANIFEST.MF
MANIFEST.MF
Manifest-Version: 1.0
Class-Path: log4j.jar lib/commons-lang.jar
Der offizielle Dateiname ist MANIFEST.MF, und die Formatierung dieser Datei kann ziemlich wählerisch sein. Sie benötigen den gesamten Inhalt in derselben Zeile (oder verwenden Sie ein einzelnes Leerzeichen als Präfix in den folgenden Zeilen für die Fortsetzung), und Sie müssen Pfade mit "," begrenzen. Mit anderen Worten: Class-Path: log4j.jar, lib/commons-lang.jar –
Correct auf dem Namen (herausgegeben, das zu reflektieren), sollte alle Kappen, aber der Classpath kann einfach durch Leerzeichen getrennt werden, auch auf die gleiche Linie. Stellen Sie sicher, dass hinter dem letzten Eintrag kein Leerzeichen steht, da dies eine Fortsetzung anzeigt. Eclipse zum Beispiel schreibt/zeigt den Klassenpfad mit einem Jar pro Zeile und einem Leerzeichen am Ende jeder Zeile an, wenn ein weiterer folgt. – Robin
Vergessen Sie nicht, zwei Zeilenumbrüche am Ende der MANIFEST.MF einzufügen. Ich erinnere mich an einen alten Fehler, dies nötig war, denn sonst über einen Teil des Inhalts würde ignoriert werden ... –
Ausgezeichnete Frage. Warum ist die Bereitstellung/Struktur von EJB/EAR-Verpackungen so viel schwieriger als WAR ??? Dies sollte ein automatischer, recht typischer Anwendungsfall sein. – Roboprog