Domanda

Sto avendo problemi durante la distribuzione di un orecchio con le guerre in bundle, barattoli, e file di configurazione (file .properties) su JBoss 4.3-EAP. Ecco la mia struttura dell'orecchio:

+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  

Ho il seguente nel mio jboss-app.xml:

<jboss-app>
  <jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>    

Il mio application.xml si presenta così:

<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>

In sostanza, dopo la distribuzione l'orecchio, mi imbatto in un problema in cui uno dei miei guerre non si può trovare una classe nel file core.jar (java.lang.NoClassDefFoundError). Penso che questo sia dovuto al fatto che la guerra non è trovare questa libreria, anche se è nella cartella lib / percorso di classe. Se provo a rimuovere il commento i primi due moduli per aggiungere le prime biblioteche partito (core.jar e tag.jar), tutto ad un tratto i file di proprietà non è più possibile trovare (si trovano, per ora, in lib/classes, in modo che, spero in ogni caso , vengono raccolti dal programma di caricamento classe. Idealmente mi piacerebbe mettere le classi nella propria directory e aggiungerlo al classpath separatamente, ma per ora mi sto solo cercando di fare questo lavoro).

Ho provato alcune altre cose, tra cui l'aggiunta manualmente core.jar nel file manifest.mf della guerra, cambiando UseJBossWebLoader a true nel file jboss-service.xml sotto il jboss-web.deployer, e varie combinazioni di quanto sopra, o nessun successo. Mi sia perdo la directory classes dal percorso di classe (cartella lib) e nessuno dei miei file di proprietà ottenere raccolti, o la guerra non può accedere alla classe corretta dal vaso. Penso che ci deve essere qualche configurazione che è sbagliato, e mentre Ho provato a leggere sul modo in cui JBoss fa implementazioni orecchio e classloading, io non riesco a adattarlo alla mia configurazione attuale.

Qualche suggerimento sarebbe molto apprezzato.

Qui ci sono alcuni siti che mi sono stati a guardare:
Raible Design JBoss ClassLoader Logic

Questi sono solo alcuni dei siti che ho guardato. I problemi potrebbero derivano dalla configurazione del progetto e, in quanto questo è un grande progetto stabilito che è (in misura) essendo migrazione da una distribuzione weblogic a Jboss. Quindi, se c'è qualcosa che dovrebbe funzionare, ma non lo fa, potrebbe essere un problema con alcune delle configurazione di codice / progetto. Purtroppo, non sono al punto in cui ancora posso dire se un problema correlato JBoss, o un problema con il progetto.

È stato utile?

Soluzione

Il tag <library-directory> in application.xml è una caratteristica JavaEE5, e non credo che JBoss 4.3 è completamente JavaEE5-compliant (si può fare EJB3, sì, ma è solo un supporto parziale).

Quindi è necessario tornare ad usare i file JAR esplicitamente dichiarate:

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

Per quanto riguarda i file proprietà, è necessario aggiungere la directory che sono in come modulo Java, quindi per il tuo esempio:

<module>
    <java>lib/classes</java>
</module>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top