When TomEE is shutting down with deployed resource adapters by calling 
javax.resource.spi.ResourceAdapter.stop() if the code attempts to load a class 
an exception is generated. I am assuming the issue here is that TomEE is 
stopping the classloader before closing the resource adapters.

To reproduce this I used hazelcast 3.1 on a TomEE+ 1.6.0-SNAPSHOT from ~Oct29
Update tomee.xml to enable deployments
Place hazelcast-3.1.jar in lib
Place hazelcast-ra-3.1.rar in apps

I get the following when shutting down:

Oct 31, 2013 11:40:45 AM org.apache.openejb.assembler.classic.Assembler 
destroyResource
INFO: Stopping ResourceAdapter: hazelcast-ra-3.1RA
Oct 31, 2013 11:40:45 AM org.apache.openejb.assembler.classic.Assembler 
destroyResource
SEVERE: ResourceAdapter Shutdown Failed: hazelcast-ra-3.1RA
java.lang.IllegalStateException: zip file closed
        at java.util.zip.ZipFile.ensureOpen(ZipFile.java:634)
        at java.util.zip.ZipFile.getEntry(ZipFile.java:305)
        at java.util.jar.JarFile.getEntry(JarFile.java:226)
        at java.util.jar.JarFile.getJarEntry(JarFile.java:209)
        at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:840)
        at sun.misc.URLClassPath.getResource(URLClassPath.java:199)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:358)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at 
org.apache.openejb.util.classloader.URLClassLoaderFirst.loadInternal(URLClassLoaderFirst.java:162)
        at 
org.apache.openejb.util.classloader.URLClassLoaderFirst.loadClass(URLClassLoaderFirst.java:115)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at 
com.hazelcast.jca.ResourceAdapterImpl.stop(ResourceAdapterImpl.java:111)
        at 
org.apache.openejb.assembler.classic.Assembler.destroyResource(Assembler.java:1397)
        at 
org.apache.openejb.assembler.classic.Assembler.destroyResourceTree(Assembler.java:1382)
        at 
org.apache.openejb.assembler.classic.Assembler.destroy(Assembler.java:1352)
        at org.apache.openejb.OpenEJB.destroy(OpenEJB.java:264)
        at org.apache.tomee.catalina.TomcatLoader.destroy(TomcatLoader.java:390)
        at 
org.apache.tomee.catalina.TomcatWebAppBuilder.afterStop(TomcatWebAppBuilder.java:1868)
        at 
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:154)
        at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at 
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at 
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:252)
        at org.apache.catalina.startup.Catalina.stop(Catalina.java:764)
        at 
org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:910)


Trevor Stevens
[email protected]


Reply via email to