[ http://issues.apache.org/jira/browse/GERONIMO-1131?page=all ]
David Jencks updated GERONIMO-1131: ----------------------------------- Attachment: GeronimoStandardContext.diff This patch fixes the issue and the server appears to work fine, but the tomcat ContainerTest fails. I haven't figured out why yet. > component context not available in tomcat servlet init methods > -------------------------------------------------------------- > > Key: GERONIMO-1131 > URL: http://issues.apache.org/jira/browse/GERONIMO-1131 > Project: Geronimo > Type: Bug > Components: Tomcat > Versions: 1.0 > Reporter: David Jencks > Assignee: David Jencks > Fix For: 1.0 > Attachments: GeronimoStandardContext.diff > > It appears that in the tomcat integration, the servlet init method is not > wrapped by the context valve. Therefore the component context is not > available. I believe the security and transaction valves should also be > traversed on the way to the init method. > Evidence is this stack trace from Jian Liao: > well, still the same problem - javax.naming.NameNotFoundException > I debug it and found that, the NameNotFoundException is thrown by > org.apache.geronimo.naming.java.RootContext > code: > Context compCtx = (Context) compContext.get(); > if (compCtx == null) { > // the component context was not set for this thread > throw new NameNotFoundException(name); > } > the call stack: > org.apache.geronimo.naming.java.RootContext.lookup(java.lang.String) line: 43 > org.apache.geronimo.naming.java.RootContext.lookup(java.lang.String) line: 43 > javax.naming.InitialContext.lookup(java.lang.String) line: 347 > > org.apache.jetspeed.components.rdbms.ojb.ConnectionRepositoryEntry.afterPropertiesSet() > line: 252 > > org.springframework.beans.factory.support.DefaultListableBeanFactory(org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory).invokeInitMethods(java.lang.String, > java.lang.Object, > org.springframework.beans.factory.support.RootBeanDefinition) line: 1072 > > org.springframework.beans.factory.support.DefaultListableBeanFactory(org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory).createBean(java.lang.String, > org.springframework.beans.factory.support.RootBeanDefinition, > java.lang.Object[], boolean) line: 343 > > org.springframework.beans.factory.support.DefaultListableBeanFactory(org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory).createBean(java.lang.String, > org.springframework.beans.factory.support.RootBeanDefinition, > java.lang.Object[]) line: 260 > > org.springframework.beans.factory.support.DefaultListableBeanFactory(org.springframework.beans.factory.support.AbstractBeanFactory).getBean(java.lang.String, > java.lang.Class, java.lang.Object[]) line: 221 > > org.springframework.beans.factory.support.DefaultListableBeanFactory(org.springframework.beans.factory.support.AbstractBeanFactory).getBean(java.lang.String) > line: 145 > > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons() > line: 291 > > org.springframework.web.context.support.XmlWebApplicationContext(org.springframework.context.support.AbstractApplicationContext).refresh() > line: 317 > > org.springframework.web.context.support.XmlWebApplicationContext(org.springframework.web.context.support.AbstractRefreshableWebApplicationContext).refresh() > line: 131 > org.apache.jetspeed.components.SpringComponentManager.start() line: 206 > org.apache.jetspeed.engine.JetspeedEngine.start() line: 137 > org.apache.jetspeed.engine.JetspeedServlet.init(javax.servlet.ServletConfig) > line: 135 > org.apache.catalina.core.StandardWrapper.loadServlet() line: 1091 > org.apache.catalina.core.StandardWrapper.load() line: 925 > > org.apache.geronimo.tomcat.GeronimoStandardContext(org.apache.catalina.core.StandardContext).loadOnStartup(org.apache.catalina.Container[]) > line: 3857 > > org.apache.geronimo.tomcat.GeronimoStandardContext(org.apache.catalina.core.StandardContext).start() > line: 4118 > org.apache.geronimo.tomcat.GeronimoStandardContext.start() line: 164 > > org.apache.catalina.core.StandardHost(org.apache.catalina.core.ContainerBase).addChildInternal(org.apache.catalina.Container) > line: 759 > > org.apache.catalina.core.StandardHost(org.apache.catalina.core.ContainerBase).addChild(org.apache.catalina.Container) > line: 739 > > org.apache.catalina.core.StandardHost.addChild(org.apache.catalina.Container) > line: 524 > > org.apache.geronimo.tomcat.TomcatContainer.addContext(org.apache.geronimo.tomcat.TomcatContext) > line: 287 > > org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.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: 779 > org.apache.geronimo.gbean.runtime.RawInvoker.invoke(int, java.lang.Object[]) > line: 57 > > org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(javax.management.ObjectName, > java.lang.Object[]) line: 36 > > org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(java.lang.Object, > java.lang.reflect.Method, java.lang.Object[], > net.sf.cglib.proxy.MethodProxy) line: 96 > > org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$9b8a0a97.addContext(org.apache.geronimo.tomcat.TomcatContext) > line: not available > org.apache.geronimo.tomcat.TomcatWebAppContext.doStart() line: 377 > org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance() line: 913 > org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart() > line: 325 > org.apache.geronimo.gbean.runtime.GBeanInstanceState.start() line: 110 > org.apache.geronimo.gbean.runtime.GBeanInstance.start() line: 499 > org.apache.geronimo.gbean.runtime.GBeanSingleReference.attemptFullStart() > line: 154 > > org.apache.geronimo.gbean.runtime.GBeanSingleReference.targetAdded(javax.management.ObjectName) > line: 127 > > org.apache.geronimo.gbean.runtime.GBeanSingleReference(org.apache.geronimo.gbean.runtime.AbstractGBeanReference).addTarget(javax.management.ObjectName) > line: 242 > > org.apache.geronimo.gbean.runtime.GBeanSingleReference$1.running(javax.management.ObjectName) > line: 163 > > org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(javax.management.ObjectName) > line: 155 > > org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(org.apache.geronimo.kernel.basic.BasicLifecycleMonitor, > javax.management.ObjectName) line: 38 > > org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent() > line: 231 > org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart() > line: 350 > org.apache.geronimo.gbean.runtime.GBeanInstanceState.start() line: 110 > org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive() line: > 132 > org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive() line: 516 > > org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(javax.management.ObjectName) > line: 210 > org.apache.geronimo.kernel.config.Configuration.startRecursiveGBeans() line: > 326 > > org.apache.geronimo.kernel.config.Configuration$$FastClassByCGLIB$$7f4b4a9b.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: 814 > > org.apache.geronimo.kernel.basic.BasicKernel.invoke(javax.management.ObjectName, > java.lang.String, java.lang.Object[], java.lang.String[]) line: 180 > > org.apache.geronimo.kernel.basic.BasicKernel.invoke(javax.management.ObjectName, > java.lang.String) line: 175 > > org.apache.geronimo.kernel.config.ConfigurationManagerImpl.start(java.net.URI) > line: 138 > > org.apache.geronimo.kernel.config.ConfigurationManagerImpl$$FastClassByCGLIB$$fbed85d2.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: 814 > > org.apache.geronimo.kernel.basic.BasicKernel.invoke(javax.management.ObjectName, > java.lang.String, java.lang.Object[], java.lang.String[]) line: 180 > org.apache.geronimo.kernel.KernelGBean.invoke(javax.management.ObjectName, > java.lang.String, java.lang.Object[], java.lang.String[]) line: 125 > > 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: 814 > > org.apache.geronimo.kernel.basic.BasicKernel.invoke(javax.management.ObjectName, > java.lang.String, java.lang.Object[], java.lang.String[]) line: 180 > > 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.GeneratedMethodAccessor151.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.GeneratedMethodAccessor168.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