You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@turbine.apache.org by Quinton McCombs <qm...@nequalsone.com> on 2002/11/27 23:59:53 UTC

Problem in Security Service

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(BaseSecuri
tyService.java:199)
 at
org.apache.turbine.services.TurbineBaseService.init(TurbineBaseService.j
ava:108)
 at
org.apache.turbine.services.BaseInitableBroker.initClass(BaseInitableBro
ker.java:149)
 at
org.apache.turbine.services.BaseServiceBroker.doInitService(BaseServiceB
roker.java:224)
 at
org.apache.turbine.services.BaseServiceBroker.initServices(BaseServiceBr
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.java:6
58)
 at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:214)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
 at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java: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.java
:180)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa
lve.java:170)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:172)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
 at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469
)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
 at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:174)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
 at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
 at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:40
5)
 at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
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(ThreadPool
.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(BaseSecuri
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(BaseSecuri
tyService.java:204)
 at
org.apache.turbine.services.TurbineBaseService.init(TurbineBaseService.j
ava:108)
 at
org.apache.turbine.services.BaseInitableBroker.initClass(BaseInitableBro
ker.java:149)
 at
org.apache.turbine.services.BaseServiceBroker.doInitService(BaseServiceB
roker.java:224)
 at
org.apache.turbine.services.BaseServiceBroker.initServices(BaseServiceBr
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.java:6
58)
 at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:214)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
 at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java: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.java
:180)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa
lve.java:170)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:172)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
 at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469
)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
 at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:174)
 at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
 at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
 at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
 at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:40
5)
 at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
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(ThreadPool
.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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Problem in Security Service

Posted by Rodney Schneider <ro...@actf.com.au>.
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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>