[ 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
