Un problema che spesso si riscontra con JBOSS è che la politica di default nel caricamento delle librerie è quella del PARENT FIRST.
Quindi JBOSS carica nel classpath prima i suoi jar e solo in seguito passa ad analizzare le librerie presenti nella WEB-INF/lib dell'applicazione.
Nel caricamento dei jar nel classpath vige la regola che il primo caricato è poi quello effettivamente utilizzato.
Da qui tutti gli innumerevoli problemi tra versioni diverse dello stesso jar, per cui il nostro war una volta deployato smette di funzionare per incompatibilità nelle librerie.
In questi casi la soluzione migliore è quella di isolare la nostra applicazione, ossia fare in modo che siano caricati prima i jar della web app e dopo quelli dell'application server.
Su JBOSS 5.1 per ottenere questo risultato bisogna aggiungere un file xml dentro la directory WEB-INF della nostra applicazione, denominato jboss-classloading.xml.
Quindi JBOSS carica nel classpath prima i suoi jar e solo in seguito passa ad analizzare le librerie presenti nella WEB-INF/lib dell'applicazione.
Nel caricamento dei jar nel classpath vige la regola che il primo caricato è poi quello effettivamente utilizzato.
Da qui tutti gli innumerevoli problemi tra versioni diverse dello stesso jar, per cui il nostro war una volta deployato smette di funzionare per incompatibilità nelle librerie.
In questi casi la soluzione migliore è quella di isolare la nostra applicazione, ossia fare in modo che siano caricati prima i jar della web app e dopo quelli dell'application server.
Su JBOSS 5.1 per ottenere questo risultato bisogna aggiungere un file xml dentro la directory WEB-INF della nostra applicazione, denominato jboss-classloading.xml.
<?xml version="1.0" encoding="UTF-8"?> <classloading xmlns="urn:jboss:classloading:1.0" parent-first="false" domain="DefaultDomain" top-level-classloader="true" parent-domain="Ignored" export-all="NON_EMPTY" import-all="true"> </classloading>
grazie mille
RispondiElimina