J'ai un problème pour déployer une oreille avec des guerres groupées, des fichiers jar et des fichiers de configuration (fichiers .properties) sur JBoss 4.3-eap. Voici ma structure de l'oreille:JBoss: le fichier WAR dans EAR ne trouve pas la bibliothèque JAR sur le chemin de classe
+app.ear
+lib
*.jar libraries that the war's use
+classes
*.properties and other configuration files
+META-INF
application.xml
jbos-app.xml
app.war
app2.war
appn.war
je suit dans mon jboss-app.xml:
<jboss-app>
<jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>
Mon application.xml ressemble à ceci:
<application id="app_id">
<display-name>App>/display-name>
<description>TheApp>/description>
<!--
<module id="core">
<java>lib/core.jar</java>
</module>
<module id="tag">
<java>lib/tag.jar</java>
</module>
-->
<module id="app">
<web>
<web-uri>app.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module id="app2">
<web>
<web-uri>app2.war</web-uri>
<context-root>/app2</context-root>
</web>
</module>
<module id="appn">
<web>
<web-uri>appn.war</web-uri>
<context-root>/appn</context-root>
</web>
</module>
<security-role id="secRole">
<description>users</description>
<role-name id="appRoleName">users</role-name>
</security-role>
<library-directory>lib</library-directory>
</application>
Fondamentalement, sur déployant l'oreille, je rencontre un problème où une de mes guerres ne trouve pas de classe dans le fichier core.jar
(java.lang.NoClassDefFoundErro
r). Je pense que cela est dû au fait que la guerre ne trouve pas cette bibliothèque, même si elle se trouve dans le dossier/classpath lib
. Si je tente de décommenter les deux premiers modules pour ajouter les premières bibliothèques parti (core.jar
et tag.jar
), tout à coup les fichiers de propriétés ne peuvent plus être trouvés (ils sont situés, pour l'instant, dans lib/classes
, de sorte que, j'espère quand même , dans le meilleur des cas je voudrais mettre des classes dans son propre répertoire et l'ajouter au classpath séparément, mais pour l'instant j'essaye juste de faire ce travail).
J'ai essayé d'autres choses, y compris l'ajout manuel core.jar
au fichier manifest.mf
de la guerre, en changeant UseJBossWebLoader
true dans le fichier jboss-service.xml
sous le jboss-web.deployer
, et diverses combinaisons de ce qui précède, pas de succès. Je perds le répertoire classes
du dossier classpath (dossier lib
) et aucun de mes fichiers de propriétés n'est récupéré, ou la guerre ne peut pas accéder à la classe appropriée à partir du fichier jar. Je pense qu'il doit y avoir une configuration qui ne va pas, et bien que j'aie essayé de lire la façon dont JBoss fait les déploiements EAR et la charge de classes, je n'arrive pas à l'adapter à mon installation actuelle.
Toutes les suggestions seraient grandement appréciées.
Voici quelques sites que j'ai regardé:
Raible Designs JBoss ClassLoader Logic
Ce ne sont que quelques-uns des sites que je l'ai regardé. Les problèmes peuvent également provenir de la configuration du projet, car il s'agit d'un grand projet établi qui est (dans une certaine mesure) migré d'un déploiement weblogic vers Jboss. Donc, s'il y a quelque chose qui DEVRAIT fonctionner, mais qui ne fonctionne pas, cela peut être un problème avec une partie de la configuration du code/projet. Malheureusement, je ne suis pas encore au point où je peux dire si c'est un problème lié à JBoss, ou un problème avec le projet.
Cela a résolu mon problème! Merci beaucoup! Je voudrais cependant poser une question de suivi: si j'ajoute ces modules au fichier application.xml, cela signifie-t-il que je n'ai pas besoin de la propriété class-path dans les fichiers manifest.mf de la guerre?Ou est-ce seulement le cas si je mets l'attribut UseJBossWebLoader dans jboss-web.deployer à true? – Mike
Je ne suis pas sûr du problème manifeste, je n'ai pas essayé moi-même, je me base toujours sur le classloader aplati par défaut. Quant à votre mise en forme, n'utilisez pas les balises core/pre, elles ne fonctionnent pas très bien. Utilisez les icônes de formatage dans l'éditeur. – skaffman