Thank you very much for your reply. I will take a look at patching the security service to handle the reload. This was just bizzare since I never knew when it would or would not fail. The only patterns that I have seen so far is every other start of TomCat usually does it. Also, forcing a reload through the manager app of Tomcat can cause it.
Very strange. -----Original Message----- From: Rodney Schneider [mailto:[EMAIL PROTECTED]] Sent: Wednesday, November 27, 2002 6:59 PM To: Turbine Users List Subject: Re: Problem in Security Service Hi Quinton, We had a problem like this because we are using a subclass of DefaultTurbineRunData for our custom implementation of the RunData interface. Actually, we never figured out exactly what was causing it. I think it was something to do with requests arriving before Turbine had finished initialising. We are also using an extended TurbineUser in our application for our custom implementation of the User interface. The problem in our case was exacerbated by the fact that the RunDataService, when it failed to load our custom User class the first time, never tried to load it again, so that if the exception occurred once, our application would be unusable and we would need to restart Tomcat. We changed the RunDataService code so that it kept retrying to load our custom User class, so that this initial start-up race condition was not fatal. I still have no idea what causes this race condition. At some stage, I will need to dig into our patched version of the RunDataService and submit a patch for our workaround. Sorry I can't be of more help. Regards, -- Rodney On Thu, 28 Nov 2002 09:59, you wrote: > I am having an odd problem with the coupled security service on T2.2 > RC2. I have extended TurbineUser and the security service is > *sometimes* throwing an exception on startup. Here is the section of > code that is throwing the exception: > > Disclaimer: The code is modified from its original for to include more > logging. > > public void init(ServletConfig config) > throws InitializationException > { > String userManagerClassName = getProperties().getProperty( > SecurityService.USER_MANAGER_KEY, > SecurityService.USER_MANAGER_DEFAULT); > > String userClassName = getProperties().getProperty( > SecurityService.USER_CLASS_KEY, > SecurityService.USER_CLASS_DEFAULT); > > try > { > log.debug("Using class "+userClassName+" for security user > class"); > userClass = Class.forName(userClassName); > } > catch (java.lang.NoClassDefFoundError e) > { > log.fatal( "Could not create instance of userClass > object", e ); > throw new InitializationException( > "BaseSecurityService.init: Failed create a Class > object for User implementation", e); > } > catch (Exception e) > { > log.fatal( "Could not create instance of userClass > object", e ); > throw new InitializationException( > "BaseSecurityService.init: Failed create a Class > object for User implementation", e); > } > <snip> > } > } > > Here is the output from turbine.log > > 2002-11-27 16:49:39,939 [Thread-5] INFO system - Start Initializing >service (early): SecurityService 2002-11-27 16:49:39,979 [Thread-5] >DEBUG org.apache.turbine.services.security.BaseSecurityService - Using > class com.nequalsone.om.NeoUser for security user class > 2002-11-27 16:49:39,979 [Thread-5] FATAL > org.apache.turbine.services.security.BaseSecurityService - Could not > create instance of userClass object > java.lang.NoClassDefFoundError: com.nequalsone.om.BaseNeoUser > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:140) > at > org.apache.turbine.services.security.BaseSecurityService.init(BaseSec >uri tyService.java:199) > at > org.apache.turbine.services.TurbineBaseService.init(TurbineBaseServic >e.j ava:108) > at > org.apache.turbine.services.BaseInitableBroker.initClass(BaseInitable >Bro ker.java:149) > at > org.apache.turbine.services.BaseServiceBroker.doInitService(BaseServi >ceB roker.java:224) > at > org.apache.turbine.services.BaseServiceBroker.initServices(BaseServic >eBr oker.java:193) > at org.apache.turbine.Turbine.init(Turbine.java:257) > at javax.servlet.GenericServlet.init(GenericServlet.java:256) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper. >jav a:924) > at > org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav >a:6 58) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV >alv e.java:214) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextV >alv e.java:191) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java: >239 6) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j >ava > > :180) > > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at >org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche >rVa lve.java:170) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:641) > at >org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j >ava > > :172) > > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:641) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: >469 ) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:641) > at >org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at >org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal >ve. java:174) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at >org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at >org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22 >3) at >org.apache.coyote.http11.Http11Processor.process(Http11Processor.java >:40 5) > at >org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce >ssC onnection(Http11Protocol.java:380) > at >org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java >:50 8) > at >org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP >ool .java:533) > at java.lang.Thread.run(Thread.java:536) > 2002-11-27 16:49:39,979 [Thread-5] ERROR system - > java.lang.NoClassDefFoundError: com.nequalsone.om.BaseNeoUser > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:140) > at >org.apache.turbine.services.security.BaseSecurityService.init(BaseSec >uri tyService.java:199) > rethrown as > org.apache.turbine.services.InitializationException: > BaseSecurityService.init: Failed create a Class object for User > implementation: com.nequalsone.om.BaseNeoUser > at >org.apache.turbine.services.security.BaseSecurityService.init(BaseSec >uri tyService.java:204) > at >org.apache.turbine.services.TurbineBaseService.init(TurbineBaseServic >e.j ava:108) > at >org.apache.turbine.services.BaseInitableBroker.initClass(BaseInitable >Bro ker.java:149) > at >org.apache.turbine.services.BaseServiceBroker.doInitService(BaseServi >ceB roker.java:224) > at >org.apache.turbine.services.BaseServiceBroker.initServices(BaseServic >eBr oker.java:193) > at org.apache.turbine.Turbine.init(Turbine.java:257) > at javax.servlet.GenericServlet.init(GenericServlet.java:256) > at >org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper. >jav a:924) > at >org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav >a:6 58) > at >org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV >alv e.java:214) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at >org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at >org.apache.catalina.core.StandardContextValve.invoke(StandardContextV >alv e.java:191) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at >org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java: >239 6) > at >org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j >ava > > :180) > > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at >org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche >rVa lve.java:170) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:641) > at >org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j >ava > > :172) > > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:641) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: >469 ) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:641) > at >org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at >org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal >ve. java:174) > at >org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex >t.i nvokeNext(StandardPipeline.java:643) > at >org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav >a:4 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at >org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22 >3) at >org.apache.coyote.http11.Http11Processor.process(Http11Processor.java >:40 5) > at >org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce >ssC onnection(Http11Protocol.java:380) > at >org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java >:50 8) > at >org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP >ool .java:533) > at java.lang.Thread.run(Thread.java:536) > 2002-11-27 16:49:39,989 [Thread-5] INFO system - Start Initializing >service (early): PoolBrokerService > > > > Now, I have made sure that my custom user class is being referenced > properly in TurbineResources.properties. It does start to load my > class but throws an exception loading the superclass. The superclass > does exist. The class file is in WEB-INF/classes. > > Any ideas???? -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
