[jira] Updated: (GERONIMO-2222) Application errors in static initialization blocks during serialization of configuration during deployment due to incorrect TCCL
[ http://issues.apache.org/jira/browse/GERONIMO-?page=all ] John Sisson updated GERONIMO-: -- Attachment: jira-g-.zip Test application attached that prints out the TCCL during static initialization in an EJB. If you deploy the EAR you will see the following messages (when this bug exists). The static initializer gets called twice (once during serialization during deployment and the 2nd time when the configuration is started). Notice that the TCCL differs between the two. BugReproBean static initializer called Thread.currentThread().getContextClassLoader() = [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=geronimo/j2ee-security/1.1.1-SNAPSHOT/car] BugReproBean.class.getClassLoader( = [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=geronimo-test/jira-g-/1.0-SNAPSHOT/ear] BugReproBean static initializer finished BugReproBean static initializer called Thread.currentThread().getContextClassLoader() = [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=geronimo-test/jira-g-/1.0-SNAPSHOT/ear] BugReproBean.class.getClassLoader( = [org.apache.geronimo.kernel.classloader.JarFileClassLoader id=geronimo-test/jira-g-/1.0-SNAPSHOT/ear] BugReproBean static initializer finished Application errors in static initialization blocks during serialization of configuration during deployment due to incorrect TCCL - Key: GERONIMO- URL: http://issues.apache.org/jira/browse/GERONIMO- Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: deployment Affects Versions: 1.0, 1.1 Reporter: John Sisson Assigned To: John Sisson Priority: Blocker Fix For: 1.1.1 Attachments: jira-g-.zip h1. Problem Exceptions and/or errors may occur in static initialization blocks invoked whilst loading classes when serializing a configuration during deployment. These same exceptions/errors don't occur when starting the configuration. h1. Symptoms Deployment of an EAR that has dependencies on its own copy of Xerces will cause an exception similar to the following if Xerces is initialised in a static block. {code} java.lang.ClassCastException at org.apache.xerces.parsers.DOMParser.init(Unknown Source) at org.apache.xerces.parsers.DOMParser.init(Unknown Source) at com.foo.server.ejb.MyEJB.clinit at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1557) at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:47) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:173) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:170) at java.io.ObjectStreamClass.writeNonProxy(ObjectStreamClass.java:557) at java.io.ObjectOutputStream.writeClassDescriptor(ObjectOutputStream.java:591) at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1142) at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1100) at java.io.ObjectOutputStream.writeClass(ObjectOutputStream.java:1082) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:996) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
[jira] Updated: (GERONIMO-2222) Application errors in static initialization blocks during serialization of configuration during deployment due to incorrect TCCL
[ http://issues.apache.org/jira/browse/GERONIMO-?page=all ] John Sisson updated GERONIMO-: -- Attachment: GERONIMO--v1.patch Proposed patch attached. Has been tested using the application previously attached to this JIRA. Application errors in static initialization blocks during serialization of configuration during deployment due to incorrect TCCL - Key: GERONIMO- URL: http://issues.apache.org/jira/browse/GERONIMO- Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: deployment Affects Versions: 1.0, 1.1 Reporter: John Sisson Assigned To: John Sisson Priority: Blocker Fix For: 1.1.1 Attachments: GERONIMO--v1.patch, jira-g-.zip h1. Problem Exceptions and/or errors may occur in static initialization blocks invoked whilst loading classes when serializing a configuration during deployment. These same exceptions/errors don't occur when starting the configuration. h1. Symptoms Deployment of an EAR that has dependencies on its own copy of Xerces will cause an exception similar to the following if Xerces is initialised in a static block. {code} java.lang.ClassCastException at org.apache.xerces.parsers.DOMParser.init(Unknown Source) at org.apache.xerces.parsers.DOMParser.init(Unknown Source) at com.foo.server.ejb.MyEJB.clinit at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1557) at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:47) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:173) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:170) at java.io.ObjectStreamClass.writeNonProxy(ObjectStreamClass.java:557) at java.io.ObjectOutputStream.writeClassDescriptor(ObjectOutputStream.java:591) at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1142) at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1100) at java.io.ObjectOutputStream.writeClass(ObjectOutputStream.java:1082) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:996) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278) at org.apache.geronimo.gbean.GBeanData.writeExternal(GBeanData.java:187) at org.apache.geronimo.kernel.config.SerializedGBeanState.storeGBeans(SerializedGBeanState.java:139) at org.apache.geronimo.kernel.config.SerializedGBeanState.writeObject(SerializedGBeanState.java:92) 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:324) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296) at
[jira] Updated: (GERONIMO-2222) Application errors in static initialization blocks during serialization of configuration during deployment due to incorrect TCCL
[ http://issues.apache.org/jira/browse/GERONIMO-?page=all ] John Sisson updated GERONIMO-: -- Attachment: jira-g--xerces-test.zip Attached test application that demonstrates Xerces problem when TCCL is not correctly set during deployment. Need to build using m2 (mvn install) and use deploy script in root directory. Application errors in static initialization blocks during serialization of configuration during deployment due to incorrect TCCL - Key: GERONIMO- URL: http://issues.apache.org/jira/browse/GERONIMO- Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: deployment Affects Versions: 1.1, 1.0 Reporter: John Sisson Assigned To: John Sisson Priority: Blocker Fix For: 1.1.1 Attachments: GERONIMO--v1.patch, jira-g--xerces-test.zip, jira-g-.zip h1. Problem Exceptions and/or errors may occur in static initialization blocks invoked whilst loading classes when serializing a configuration during deployment. These same exceptions/errors don't occur when starting the configuration. h1. Symptoms Deployment of an EAR that has dependencies on its own copy of Xerces will cause an exception similar to the following if Xerces is initialised in a static block. {code} java.lang.ClassCastException at org.apache.xerces.parsers.DOMParser.init(Unknown Source) at org.apache.xerces.parsers.DOMParser.init(Unknown Source) at com.foo.server.ejb.MyEJB.clinit at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1557) at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:47) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:173) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:170) at java.io.ObjectStreamClass.writeNonProxy(ObjectStreamClass.java:557) at java.io.ObjectOutputStream.writeClassDescriptor(ObjectOutputStream.java:591) at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1142) at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1100) at java.io.ObjectOutputStream.writeClass(ObjectOutputStream.java:1082) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:996) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278) at org.apache.geronimo.gbean.GBeanData.writeExternal(GBeanData.java:187) at org.apache.geronimo.kernel.config.SerializedGBeanState.storeGBeans(SerializedGBeanState.java:139) at org.apache.geronimo.kernel.config.SerializedGBeanState.writeObject(SerializedGBeanState.java:92) 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:324) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809) at