Rodrigo Uchoa [https://community.jboss.org/people/rodrigo.uchoa] created the 
discussion

"Overriding server libs in an EJB inside an EAR - 5.1.0.GA"

To view the discussion, visit: https://community.jboss.org/message/737773#737773

--------------------------------------------------------------
Hi everyone!

This is something I've been struggling for quite some time. That is, how to 
change the classloader behavior in an EAR deploy. I've read a lot of posts and 
docs around the internet, but nothing seems to be exactly my case.

It all started with the need to update Hibernate libs in JBoss 5.1.0.GA (from 
the bundled 3.2.4 to 3.3.1). Using the jboss-classloading.xml file it worked 
fine when we use a standalone .WAR deploy with the hibernate libs inside 
"WEB-INF/lib" directory. When we switched to an .EAR deploy, it stopped 
working. Our .EAR structure looks like this:

EAR
|
|---- lib //all libs, including hibernate's, are here
|
|---- META-INF
|             |---- jboss-classloading.xml 
|
|---- EJB_Module //persistence-unit defined here, along with EJB business 
classes
|
|---- WAR_Module
              |---- WEB-INF
                          |---- jboss-classloading.xml


The EAR jboss-classloading.xml:

<classloading xmlns="urn:jboss:classloading:1.0"
    domain="app.ear"
    export-all="NON_EMPTY"
    import-all="true"
    parent-first="false">
</classloading>



The WAR's jboss-classloading.xml:

<classloading xmlns="urn:jboss:classloading:1.0"
    domain="app.war"
    parent-domain="app.ear"
    export-all="NON_EMPTY"
    import-all="true">
</classloading>



Now to the problem... Let's suppose I have two different .EAR projects with the 
exact same structure described above. When I deploy both of them to the same 
JBoss AS instance, one of them always have classloading issues with the 
hibernate libs when server is starting up. More specifically, we get 
"ClassCastException" with a hibernate interceptor we have:

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: sinpi-pu] 
Interceptor class does not implement Interceptor interface: 
br.gov.dpf.sinpi.core.util.HistoricoInterceptor
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:811)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)
    at 
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
    at 
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at 
org.jboss.seam.persistence.EntityManagerFactory.createEntityManagerFactory(EntityManagerFactory.java:85)
    at 
org.jboss.seam.persistence.EntityManagerFactory.startup(EntityManagerFactory.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
    at org.jboss.seam.Component.callComponentMethod(Component.java:2283)
    at org.jboss.seam.Component.callCreateMethod(Component.java:2198)
    at org.jboss.seam.Component.newInstance(Component.java:2158)
    ... 75 more
Caused by: java.lang.ClassCastException: 
br.gov.dpf.sinpi.core.util.HistoricoInterceptor
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:793)



My assumption is that different "org.hibernate.Interceptor" classes loaded by 
different classloaders are causing this mess. This problem only occurs when we 
deploy two EAR's at the same time. I even tried to change the 
"ear-deployer-jboss-beans.xml" isolated configuration, but it didn't work. What 
I need is that both EAR's use the newer hibernate libs bundled inside each 
"ear/lib" directory.

Any ideas would be appreciated.
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/737773#737773]

Start a new discussion in JBoss Microcontainer at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2114]

_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to