Question

J'ai un problème avec le déploiement d'une oreille, les guerres empaquetés pots, et les fichiers de configuration (fichiers .properties) sur JBoss 4.3-pae. Voici ma structure de l'oreille:

+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  

J'ai ce qui 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>

En fait, lors du déploiement de l'oreille, je lance dans un problème où l'un de mes guerres ne peut pas trouver une classe dans le fichier core.jar (de java.lang.NoClassDefFoundError). Je pense que cela est dû au fait que la guerre ne trouve pas cette bibliothèque, même si elle est dans le dossier lib / classpath. Si je tente de décommenter les deux premiers modules pour ajouter les premières bibliothèques du parti (de core.jar et tag.jar), tout d'un coup les fichiers de propriétés ne peuvent plus être trouvés (ils sont situés, pour l'instant, à lib/classes, de sorte que, je l'espère de toute façon , ils sont repris par le classloader. Idéalement, je voudrais mettre des cours dans son propre répertoire et l'ajouter au classpath séparément, mais pour l'instant je suis juste essayer 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 soit le répertoire classes du classpath (dossier lib) et aucun de mes fichiers de propriétés obtenir ramassé, ou la guerre ne peut accéder à la classe appropriée du pot. Je pense qu'il doit y avoir une certaine configuration qui ne va pas, et pendant que je l'ai essayé à lire sur la façon dont JBoss fait les déploiements EAR et classloading, je ne peux pas sembler adapter à ma configuration actuelle.

Toutes les suggestions seraient grandement appréciés.

Voici quelques sites que j'ai regardé:
Raible Designs Logic JBoss ClassLoader

Ce ne sont que quelques-uns des sites que je l'ai regardé. Les problèmes pourraient résulter de la mise en place du projet aussi bien, car cela est un grand projet qui est mis en place (dans une certaine mesure) en cours de migration d'un déploiement weblogic à Jboss. Donc, s'il y a quelque chose qui devrait fonctionner, mais ne pas, il est peut-être un problème avec une partie de la configuration 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.

Était-ce utile?

La solution

La balise <library-directory> dans application.xml est une caractéristique JavaEE5, et je ne pense pas que JBoss 4.3 est entièrement compatible JavaEE5 (il peut faire EJB3, oui, mais il est seulement un support partiel).

Vous devez revenir à l'utilisation des fichiers JAR explicitement déclarés:

<module>
    <java>lib/core.jar</java>
</module>

En ce qui concerne, vous avez besoin de vos fichiers de propriétés pour ajouter le répertoire qu'ils sont en tant que module java, donc pour votre exemple:

<module>
    <java>lib/classes</java>
</module>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top