approche oreille
Vous pouvez simplement le déposer dans le webapps Tomcat/et il sera ramassé.
Exemple oreille (valide):
myapplication.ear
lib/
lib/libraryOne.jar
lib/libraryTwo.jar
redEjbs.jar
blueEjbs.jar
erreur commune (invalide):
myapplication.ear
libraryOne.jar (err. not a javaee module)
libraryTwo.jar (err. not a javaee module)
redEjbs.jar
blueEjbs.jar
Seuls les modules Java EE sont autorisés à la racine. Il s'agit des fichiers jar d'EJB, des fichiers .war, des fichiers .rar Connector et des fichiers Application Client jars. Avant Java EE 5, les bibliothèques devaient être explicitement listées dans un fichier application.xml. Java EE 5 et vers l'avant ils peuvent être ajoutés à un répertoire lib/et être compris comme étant des fichiers JAR simples par opposition à un module Java EE.
approche Effondré EAR
Dans OpenEJB/Tomcat, vous pouvez mettre toutes vos bibliothèques dans le fichier de guerre et être libre du concept de l'oreille. Ce fait maintenant partie de Java EE 6.
mywebapp.war
WEB-INF/lib/libraryOne.jar
WEB-INF/lib/libraryTwo.jar
WEB-INF/lib/redEjbs.jar
WEB-INF/lib/blueEjbs.jar
erreur commune, y compris les spécifications:
mywebapp.war
WEB-INF/lib/javax.ejb.jar (err. clashes with the related system library)
WEB-INF/lib/libraryOne.jar
WEB-INF/lib/libraryTwo.jar
WEB-INF/lib/redEjbs.jar
WEB-INF/lib/blueEjbs.jar
ne ressemble pas à c'est la question, mais en ajoutant à l'exhaustivité.
erreur commune, dépendances cassées:
tomcat/lib/libraryTwo.jar
mywebapp.war
WEB-INF/lib/libraryOne.jar
WEB-INF/lib/redEjbs.jar
WEB-INF/lib/blueEjbs.jar
Ce qui précède n'est pas invalide du point de vue de la spécification et il est impossible pour le serveur de détecter, mais peut conduire à des applications ne se charge pas correctement. Si libraryTwo.jar a besoin de classes dans libraryOne.jar, cette application ne fonctionnera jamais car le classloader Tomcat "lib" ne peut pas voir les classes du chargeur de classe "webapp", donc les classes de libraryTwo.jar ne seront jamais chargées avec succès. Malheureusement, le MV ne dira presque jamais la classe qui manquait et rapportera à la place le premier cours de la série d'événements qui conduirait à avoir besoin d'une classe qui manquait. C'est presque toujours une classe de bean ou de servlet.
Je pense que tomcat_home/lib est le chemin à parcourir pour éviter les problèmes de classloader. Voir http://usna86-techbits.blogspot.com/2009/12/tomcat-openejb-and-jersey-oh-my.html – JoseK
@JoseK Je pense que ce problème particulier était lié à l'inclusion de bibliothèques javax dans la webapp. La plupart d'entre elles sont ajoutées via le fichier javaee-api fourni avec OpenEJB. D'autres libs de tiers devraient être bien. Certainement laissez-moi savoir si vous avez vécu autrement. –