2012-03-12 3 views
5

Ora posso caricare giare che si trovano sotto EAR/lib. Ma voglio mettere i giare su un percorso comune, per altre applicazioni da usare. Ho trovato che il tag del file jboss-deployment-structure.xml può farlo. Ma non funziona. Ho ricevuto l'eccezione ClassNotFound. Non so perché?Come posso usare i barattoli esterni su JBoss 7?

<deployment> 
    <resources> 
     <resource-root path="/common/test.jar" /> 
    </resources> 
</deployment> 

risposta

11

Un modo di utilizzare le librerie globali in diverse applicazioni può essere raggiunto rendendole disponibili come moduli. Quindi, estendere i moduli dalla libreria che si fornisce come provider di server.

Esempio: per rendere il vostro test.jar disponibili a tutte le applicazioni, creare una cartella con il nome moduli ed un main sottodirectory (ad esempio modules/commons/test/main).

Inserire la libreria e un file di descrizione del modulo con il nome module.xml. contenuto Esempio:

<module xmlns="urn:jboss:module:1.0" name="commons.test"> 
    <resources> 
     <resource-root path="test.jar"/> 
    </resources> 
</module> 

Ora la libreria è disponibile per tutte le applicazioni. Per accedere al modulo, l'applicazione deve definire la dipendenza nel manifest.

Applicazioni manifest.mf:


Dependencies: commons.test 

questo può essere fatto anche da Maven durante il tempo di compilazione. per i dettagli https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7 per i dettagli

Si prega di notare che si sta modificando il server stesso. Tutte le applicazioni che utilizzano il modulo dipendono da questo. Un'applicazione con una dipendenza dal modulo commons.test non verrà distribuita su un server che non ha questo modulo fornito.

+0

È possibile fare lo stesso senza toccare i moduli (globali) del server? cioè, creando moduli all'interno di EAR? – Sriram

+0

c'è una possibilità di wild card invece di specificare ogni libreria? – Inv3r53