You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "John Sisson (JIRA)" <de...@geronimo.apache.org> on 2005/03/13 13:01:53 UTC

[jira] Created: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

geronimo.log can be closed whilst distributing an EAR if the application uses log4j
-----------------------------------------------------------------------------------

         Key: GERONIMO-609
         URL: http://issues.apache.org/jira/browse/GERONIMO-609
     Project: Geronimo
        Type: Bug
  Components: deployment  
    Reporter: John Sisson


The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.

The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.

Here is the stack trace:

System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
	<snip - application code>
	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
	java.io.ObjectStreamClass$1.run() line: 173
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
	sun.rmi.transport.Transport$1.run() line: 148
	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
	java.lang.Thread.run() line: 534


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Commented: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

Posted by "David Jencks (JIRA)" <de...@geronimo.apache.org>.
     [ http://issues.apache.org/jira/browse/GERONIMO-609?page=comments#action_60739 ]
     
David Jencks commented on GERONIMO-609:
---------------------------------------

ObjectInputStreamExt is exists because array classes don't seem to be deserialized properly with the standard ObjectInputStream.  If you look at ClassLoading you will see that much of it is devoted to translating between the array class format from ObjectStreamClass.getName() and that accepted by ClassLoader.loadClass().  If you have a better way....

I looked at the trace you provided but I can't see yet why the TCCL needs to be set when serializing an object.  Can you provide a more focussed explanation?

> geronimo.log can be closed whilst distributing an EAR if the application uses log4j
> -----------------------------------------------------------------------------------
>
>          Key: GERONIMO-609
>          URL: http://issues.apache.org/jira/browse/GERONIMO-609
>      Project: Geronimo
>         Type: Bug
>   Components: deployment
>     Reporter: John Sisson

>
> The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.
> The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.
> Here is the stack trace:
> System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
> 	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
> 	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
> 	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
> 	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
> 	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
> 	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
> 	<snip - application code>
> 	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
> 	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
> 	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
> 	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
> 	java.io.ObjectStreamClass$1.run() line: 173
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
> 	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
> 	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
> 	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
> 	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
> 	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
> 	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
> 	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
> 	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
> 	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
> 	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
> 	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
> 	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
> 	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
> 	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
> 	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
> 	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
> 	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
> 	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
> 	sun.rmi.transport.Transport$1.run() line: 148
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
> 	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
> 	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
> 	java.lang.Thread.run() line: 534

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Closed: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

Posted by "John Sisson (JIRA)" <de...@geronimo.apache.org>.
     [ http://issues.apache.org/jira/browse/GERONIMO-609?page=all ]
     
John Sisson closed GERONIMO-609:
--------------------------------

    Fix Version: 1.1
                     (was: 1.2)
     Resolution: Won't Fix

This problem can be avoided by using the following in an application's deployment plan:

<hidden-classes>
    <filter>org.apache.log4j</filter>
</hidden-classes>

So the application can use its own instance of log4j.

> geronimo.log can be closed whilst distributing an EAR if the application uses log4j
> -----------------------------------------------------------------------------------
>
>          Key: GERONIMO-609
>          URL: http://issues.apache.org/jira/browse/GERONIMO-609
>      Project: Geronimo
>         Type: Bug
>   Components: deployment
>     Reporter: John Sisson
>     Assignee: John Sisson
>      Fix For: 1.1

>
> The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.
> The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.
> Here is the stack trace:
> System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
> 	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
> 	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
> 	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
> 	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
> 	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
> 	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
> 	<snip - application code>
> 	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
> 	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
> 	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
> 	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
> 	java.io.ObjectStreamClass$1.run() line: 173
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
> 	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
> 	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
> 	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
> 	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
> 	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
> 	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
> 	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
> 	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
> 	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
> 	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
> 	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
> 	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
> 	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
> 	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
> 	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
> 	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
> 	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
> 	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
> 	sun.rmi.transport.Transport$1.run() line: 148
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
> 	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
> 	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
> 	java.lang.Thread.run() line: 534

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Commented: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

Posted by "John Sisson (JIRA)" <de...@geronimo.apache.org>.
     [ http://issues.apache.org/jira/browse/GERONIMO-609?page=comments#action_60738 ]
     
John Sisson commented on GERONIMO-609:
--------------------------------------

I would like to resolve this problem ASAP as it is a PITA not to have an operational geronimo.log when one is testing :-(

It seems that Configuration.storeGBeans(..) needs to be changed so that it runs under the classloader that was configured by the builder.  

Can someone please tell me whether the following proposed changes sound appropriate: 

* Change the signature for DeploymentContext.close() method so that it has a ClassLoader parameter.  The following callers would then need to be changed to pass a ClassLoader parameter:

addGBeans(EARContext, Module, ClassLoader) - org.apache.geronimo.client.builder.AppClientModuleBuilder
buildConfiguration(ConfigurationType, String, String, File) - org.apache.geronimo.deployment.service.ServiceConfigBuilder
buildConfiguration(Object, JarFile, File) - org.apache.geronimo.j2ee.deployment.EARConfigBuilder
buildConfiguration(Object, JarFile, File) - org.apache.geronimo.spring.deployment.SPRConfigBuilder
executeTestBuildModule(InstallAction, boolean) - org.apache.geronimo.connector.deployment.ConnectorModuleBuilderTest
testDeployWar4() - org.apache.geronimo.jetty.deployment.JettyModuleBuilderTest

* Change the implementation of DeploymentContext.close(ClassLoader cl) so that it passes cl to the saveConfiguration(..) method, which in turn will pass cl on the call to Configuration.storeGBeans(..).
* Change the implementation of the Configuration.storeGBeans(..) method so that it calls setContextClassLoader.  

Note: It appears that related method, loadGBeans(..), is executed in this fashion, as the Configuration constructor calls storeGBeans(..) inside a try block similar to the following:

ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
        try {
            Thread.currentThread().setContextClassLoader(configurationClassLoader);
                                ....
        } finally {
            Thread.currentThread().setContextClassLoader(oldCl);
        }

Side Question: What is the purpose of ObjectInputStreamExt that is used in the loadGBeans function?

Thanks,

John

> geronimo.log can be closed whilst distributing an EAR if the application uses log4j
> -----------------------------------------------------------------------------------
>
>          Key: GERONIMO-609
>          URL: http://issues.apache.org/jira/browse/GERONIMO-609
>      Project: Geronimo
>         Type: Bug
>   Components: deployment
>     Reporter: John Sisson

>
> The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.
> The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.
> Here is the stack trace:
> System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
> 	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
> 	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
> 	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
> 	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
> 	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
> 	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
> 	<snip - application code>
> 	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
> 	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
> 	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
> 	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
> 	java.io.ObjectStreamClass$1.run() line: 173
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
> 	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
> 	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
> 	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
> 	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
> 	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
> 	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
> 	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
> 	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
> 	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
> 	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
> 	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
> 	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
> 	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
> 	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
> 	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
> 	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
> 	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
> 	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
> 	sun.rmi.transport.Transport$1.run() line: 148
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
> 	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
> 	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
> 	java.lang.Thread.run() line: 534

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Updated: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

Posted by "Aaron Mulder (JIRA)" <de...@geronimo.apache.org>.
     [ http://issues.apache.org/jira/browse/GERONIMO-609?page=all ]

Aaron Mulder updated GERONIMO-609:
----------------------------------

    Fix Version: 1.0
    Description: 
The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.

The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.

Here is the stack trace:

System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
	<snip - application code>
	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
	java.io.ObjectStreamClass$1.run() line: 173
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
	sun.rmi.transport.Transport$1.run() line: 148
	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
	java.lang.Thread.run() line: 534


  was:
The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.

The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.

Here is the stack trace:

System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
	<snip - application code>
	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
	java.io.ObjectStreamClass$1.run() line: 173
	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
	sun.rmi.transport.Transport$1.run() line: 148
	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
	java.lang.Thread.run() line: 534


    Environment: 

> geronimo.log can be closed whilst distributing an EAR if the application uses log4j
> -----------------------------------------------------------------------------------
>
>          Key: GERONIMO-609
>          URL: http://issues.apache.org/jira/browse/GERONIMO-609
>      Project: Geronimo
>         Type: Bug
>   Components: deployment
>     Reporter: John Sisson
>      Fix For: 1.0

>
> The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.
> The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.
> Here is the stack trace:
> System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
> 	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
> 	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
> 	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
> 	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
> 	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
> 	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
> 	<snip - application code>
> 	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
> 	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
> 	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
> 	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
> 	java.io.ObjectStreamClass$1.run() line: 173
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
> 	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
> 	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
> 	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
> 	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
> 	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
> 	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
> 	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
> 	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
> 	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
> 	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
> 	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
> 	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
> 	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
> 	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
> 	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
> 	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
> 	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
> 	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
> 	sun.rmi.transport.Transport$1.run() line: 148
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
> 	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
> 	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
> 	java.lang.Thread.run() line: 534

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

Posted by "Matt Hogstrom (JIRA)" <de...@geronimo.apache.org>.
     [ http://issues.apache.org/jira/browse/GERONIMO-609?page=all ]

Matt Hogstrom updated GERONIMO-609:
-----------------------------------

    Fix Version: 1.1
                     (was: 1.0)
      Assign To: John Sisson

John will review 

> geronimo.log can be closed whilst distributing an EAR if the application uses log4j
> -----------------------------------------------------------------------------------
>
>          Key: GERONIMO-609
>          URL: http://issues.apache.org/jira/browse/GERONIMO-609
>      Project: Geronimo
>         Type: Bug
>   Components: deployment
>     Reporter: John Sisson
>     Assignee: John Sisson
>      Fix For: 1.1

>
> The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.
> The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.
> Here is the stack trace:
> System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
> 	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
> 	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
> 	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
> 	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
> 	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
> 	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
> 	<snip - application code>
> 	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
> 	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
> 	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
> 	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
> 	java.io.ObjectStreamClass$1.run() line: 173
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
> 	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
> 	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
> 	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
> 	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
> 	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
> 	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
> 	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
> 	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
> 	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
> 	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
> 	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
> 	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
> 	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
> 	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
> 	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
> 	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
> 	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
> 	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
> 	sun.rmi.transport.Transport$1.run() line: 148
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
> 	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
> 	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
> 	java.lang.Thread.run() line: 534

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Commented: (GERONIMO-609) geronimo.log can be closed whilst distributing an EAR if the application uses log4j

Posted by "John Sisson (JIRA)" <de...@geronimo.apache.org>.
     [ http://issues.apache.org/jira/browse/GERONIMO-609?page=comments#action_61047 ]
     
John Sisson commented on GERONIMO-609:
--------------------------------------

Sorry, I was thinking of Servlet classloading, not standard classloading.

I am at a bit of a loss as to how to solve this problem.  I am hoping that the ContextJNDISelector in Log4j 1.3 may be a solution for EJB applications that read their own log4j configuration files, so they can do so without clobbering Geronimo's logging configurations ( http://cvs.apache.org/viewcvs.cgi/logging-log4j/src/java/org/apache/log4j/selector/ContextJNDISelector.java?hideattic=0
 ).

See the article http://www.qos.ch/logging/sc.jsp for some background info on Log4j repository selectors.  

FYI.. The ContextJNDISelector class has been moved from the log4j sandbox to log4j proper for the 1.3 release.  The ContextClassLoaderSelector class that was in the log4j sandbox was retired because there was concern that it would cause headaches based upon classloader particularities.

I have opened another issue for changes required for Log4j 1.3 ( http://issues.apache.org/jira/browse/GERONIMO-611 ).


> geronimo.log can be closed whilst distributing an EAR if the application uses log4j
> -----------------------------------------------------------------------------------
>
>          Key: GERONIMO-609
>          URL: http://issues.apache.org/jira/browse/GERONIMO-609
>      Project: Geronimo
>         Type: Bug
>   Components: deployment
>     Reporter: John Sisson

>
> The following stack trace shows the geronimo.log file being closed as a result of static code being executed in a session bean whilst the configuration is being stored.
> The EAR has a geronimo-application.xml file that contains a dependencies element that adds log4j as a dependency, to ensure the application (when it initialises its logging) does not interfere with geronimo's logging.  Well, that was the plan, but I wasn't expecting to see the application's code being executed without using the dependencies it was configured with.
> Here is the stack trace:
> System Thread [RMI TCP Connection(7)-172.21.35.170] (Suspended (breakpoint at line 171 in org.apache.log4j.FileAppender))
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).closeFile() line: 171
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.FileAppender).reset() line: 302
> 	org.apache.log4j.RollingFileAppender(org.apache.log4j.WriterAppender).close() line: 195
> 	org.apache.log4j.helpers.AppenderAttachableImpl.removeAllAppenders() line: 132
> 	org.apache.log4j.spi.RootCategory(org.apache.log4j.Category).removeAllAppenders() line: 879
> 	org.apache.log4j.PropertyConfigurator.parseCategory(java.util.Properties, org.apache.log4j.Logger, java.lang.String, java.lang.String, java.lang.String) line: 594
> 	org.apache.log4j.PropertyConfigurator.configureRootCategory(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 500
> 	org.apache.log4j.PropertyConfigurator.doConfigure(java.util.Properties, org.apache.log4j.spi.LoggerRepository) line: 406
> 	org.apache.log4j.PropertyConfigurator.configure(java.util.Properties) line: 340
> 	<snip - application code>
> 	com.blah.server.ejb.ServerConfigPvtBean.<clinit>() line: 93
> 	java.io.ObjectStreamClass.hasStaticInitializer(java.lang.Class) line: not available [native method]
> 	java.io.ObjectStreamClass.computeDefaultSUID(java.lang.Class) line: 1557
> 	java.io.ObjectStreamClass.access$100(java.lang.Class) line: 47
> 	java.io.ObjectStreamClass$1.run() line: 173
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedAction) line: not available [native method]
> 	java.io.ObjectStreamClass.getSerialVersionUID() line: 170
> 	java.io.ObjectStreamClass.writeNonProxy(java.io.ObjectOutputStream) line: 557
> 	java.io.ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass) line: 591
> 	java.io.ObjectOutputStream.writeNonProxyDesc(java.io.ObjectStreamClass, boolean) line: 1142
> 	java.io.ObjectOutputStream.writeClassDesc(java.io.ObjectStreamClass, boolean) line: 1100
> 	java.io.ObjectOutputStream.writeClass(java.lang.Class, boolean) line: 1082
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 996
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeArray(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1224
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1050
> 	java.io.ObjectOutputStream.defaultWriteFields(java.lang.Object, java.io.ObjectStreamClass) line: 1332
> 	java.io.ObjectOutputStream.writeSerialData(java.lang.Object, java.io.ObjectStreamClass) line: 1304
> 	java.io.ObjectOutputStream.writeOrdinaryObject(java.lang.Object, java.io.ObjectStreamClass, boolean) line: 1247
> 	java.io.ObjectOutputStream.writeObject0(java.lang.Object, boolean) line: 1052
> 	java.io.ObjectOutputStream.writeObject(java.lang.Object) line: 278
> 	org.apache.geronimo.gbean.GBeanData.writeExternal(java.io.ObjectOutput) line: 132
> 	org.apache.geronimo.kernel.config.Configuration.storeGBeans(org.apache.geronimo.gbean.GBeanData[]) line: 422
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).saveConfiguration() line: 490
> 	org.apache.geronimo.j2ee.deployment.EARContext(org.apache.geronimo.deployment.DeploymentContext).close() line: 452
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: 359
> 	org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(int, java.lang.Object[]) line: 710
> 	org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) line: 57
> 	org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(javax.management.ObjectName, java.lang.Object[]) line: 36
> 	org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy) line: 92
> 	org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$661d6fa5.buildConfiguration(java.lang.Object, java.util.jar.JarFile, java.io.File) line: not available
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File, java.io.File, boolean, java.lang.String, java.lang.String, java.lang.String) line: 172
> 	org.apache.geronimo.deployment.Deployer.deploy(java.io.File, java.io.File) line: 85
> 	org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 121
> 	org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(int, java.lang.Object, java.lang.Object[]) line: not available
> 	net.sf.cglib.reflect.FastMethod.invoke(java.lang.Object, java.lang.Object[]) line: 53
> 	org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(java.lang.Object, java.lang.Object[]) line: 38
> 	org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(java.lang.Object, java.lang.Object[]) line: 118
> 	org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(java.lang.String, java.lang.Object[], java.lang.String[]) line: 745
> 	org.apache.geronimo.kernel.Kernel.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 299
> 	org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(javax.management.ObjectName, java.lang.String, java.lang.Object[], java.lang.String[]) line: 117
> 	mx4j.remote.rmi.RMIConnectionInvoker.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 219
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker(mx4j.remote.rmi.RMIConnectionProxy).invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 34
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 99
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(mx4j.remote.rmi.RMIConnectionSubjectInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 31
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run() line: 90
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: 500
> 	mx4j.remote.MX4JRemoteUtils.subjectInvoke(javax.security.auth.Subject, javax.security.auth.Subject, java.security.AccessControlContext, java.util.Map, java.security.PrivilegedExceptionAction) line: 163
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], javax.security.auth.Subject) line: 86
> 	mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) line: 80
> 	$Proxy0.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: not available
> 	javax.management.remote.rmi.RMIConnectionImpl.invoke(javax.management.ObjectName, java.lang.String, java.rmi.MarshalledObject, java.lang.String[], javax.security.auth.Subject) line: 221
> 	sun.reflect.GeneratedMethodAccessor74.invoke(java.lang.Object, java.lang.Object[]) line: not available
> 	sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25
> 	java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324
> 	sun.rmi.server.UnicastServerRef2(sun.rmi.server.UnicastServerRef).dispatch(java.rmi.Remote, java.rmi.server.RemoteCall) line: 261
> 	sun.rmi.transport.Transport$1.run() line: 148
> 	java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) line: not available [native method]
> 	sun.rmi.transport.tcp.TCPTransport(sun.rmi.transport.Transport).serviceCall(java.rmi.server.RemoteCall) line: 144
> 	sun.rmi.transport.tcp.TCPTransport.handleMessages(sun.rmi.transport.Connection, boolean) line: 460
> 	sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run() line: 701
> 	java.lang.Thread.run() line: 534

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira