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]