2009-09-01 11 views
12

J'ai une ancienne application J2EE (J2EE 1.3), qui s'emballe dans un fichier EAR, et dans le fichier EAR, il y a des fichiers WAR et des fichiers JAR d'EJB. Maintenant, l'un des fichiers JAR d'EJB doit se référer à certains fichiers JAR de bibliothèques tierces, quel est le meilleur endroit pour empaqueter ces fichiers JAR et comment?Comment emballer des fichiers JAR tiers dans un fichier EJB?

+2

Excellente question. Pourquoi le déploiement/la structure des emballages EJB/EAR est-il beaucoup plus difficile que WAR ??? Cela devrait être un cas d'utilisation automatique, assez typique. – Roboprog

Répondre

18

Ils vont dans le fichier de l'oreille, à la racine ou vous pouvez créer un répertoire lib pour les stocker. Tout projet (EJB ou WAR) qui doit les référencer doit les inclure dans le Class-Path: du fichier manifeste.

contenu de l'oreille

- log4j.jar 
    - lib 
    - commons-lang.jar 
    - MyEJBProj.jar 
    - MyWAR.war 

des contenus MyEJBProj

- classes 
- META-INF 
    - MANIFEST.MF 

de MANIFEST.MF

Manifest-Version: 1.0 
    Class-Path: log4j.jar lib/commons-lang.jar 
+1

Le nom de fichier officiel est MANIFEST.MF, et la mise en forme de ce fichier peut être assez difficile. Vous avez besoin de tout le contenu sur la même ligne (ou utilisez un seul caractère espace comme préfixe sur les lignes suivantes pour la continuation), et vous devez délimiter les chemins avec ",". En d'autres termes: Classe-chemin: log4j.jar, lib/commons-lang.jar –

+0

Corriger sur le nom (édité pour refléter cela), devrait être tout en majuscules, mais le classpath peut être simplement séparé par des espaces, même sur la même ligne. Assurez-vous qu'il n'y a pas d'espace après la dernière entrée car cela indique une continuation. Eclipse, par exemple écrira/affichera le classpath avec un pot par ligne et un espace à la fin de chaque ligne si un autre suit. – Robin

+0

N'oubliez pas d'inclure deux sauts de ligne à la fin du fichier MANIFEST.MF. Je me souviens d'un vieil insecte où cela était nécessaire, car sinon le contenu ci-dessus serait ignoré ... –

Questions connexes