2011-12-08 18 views
6

Sto riscontrando un problema durante l'implementazione in JBoss di un DB Oracle. La distribuzione su Tomcat funziona correttamente - Nessun problema. Sospetto che il problema sia relativo a una libreria in conflitto fornita con JBoss. Quando si tenta di interrogare il database (utilizzando Hibernate), ottengo il seguente:JBoss Hibernate Library Conflict

2011-12-08 08:02:53,640 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/xxxx].[xxxx]] (http-0.0.0.0-8080-9) Servlet.service() for servlet xxxx threw exception 
java.lang.IllegalStateException: [email protected]{vfszip:/opt/jboss/jboss-eap-5.1/jboss-as/server/web/deploy/xxxxx.war/} classLoader is not connected to a domain (probably undeployed?) for class oracle.sql.DATE 
     at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:857) 
     at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502) 
     at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447) 

Anche in questo caso, nessun problema durante l'esecuzione in Tomcat. Ho creato un file jboss-classloading nel mio Webroot la contiene questo:

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

Ma non sembra aiutare. Stranamente, mi sto connettendo a due database diversi con due diverse configurazioni di ibernazione, uno Oracle 11i e uno Oracle 8i. La connessione Oracle 11 non genera mai un problema ... È solo la connessione 8i che causa questo problema. La 11 connessione funziona bene.

Non ho idea del motivo per cui ciò accada, ma forse JBoss contiene una lib di dialisi di Oracle 8 Hibernate e non la lib di dialect di Oracle 11? In ogni caso, come faccio a dire a JBoss di usare le mie librerie pacchettizzate e non quelle trovate sul suo classpath (supponendo che questo sia il mio problema)?

+0

Ho bisogno jboss-web.xml (in WEB-INF): com.talecris: archive = flint.war java2ParentDelegation = false MTR

+0

Questo è quello che abbiamo fatto sul nostro schieramento JBoss, abbiamo rimosso tutti i vasi in letargo di JBOSS ser che l'ha fatto Nel nostro caso la versione di ibernazione sulla nostra app non corrispondeva alla versione di jboss. –

+0

Il modo più semplice è quello di rimuovere i contenitori di ibernazione dal server jboss e mettere i barattoli sul tuo classpath. Altrimenti dovresti configurare un jboss-web –

risposta

0

Penso che la causa principale dei problemi sia il validatore di ibernazione, e penso che dovresti aggiungere l'hibernate-validator-legacy se stai usando maven puoi usare la seguente dipendenza.

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator-legacy</artifactId> 
     <version>4.0.2.GA</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>hibernate-commons-annotations</artifactId> 
       <groupId>org.hibernate</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency>