I have an application that use j_security for a form-based authentication. When 
the application is deployed for the first time (or the tomcat is restarted) 
user gets this exception when trying access a protected content directly 
(without login).

GRAVE: Servlet.service() for servlet [default] in context with path 
[/mycontext]  threw exception [Could not initialize class 
javax.servlet.http.Cookie] with root cause

    java.lang.NoClassDefFoundError: Could not initialize class 
javax.servlet.http.Cookie

    at 
org.apache.catalina.core.ApplicationSessionCookieConfig.createSessionCookie(ApplicationSessionCookieConfig.java:127)

    at org.apache.catalina.connector.Request.doGetSession(Request.java:2875)

    at org.apache.catalina.connector.Request.getSession(Request.java:2307)

    at 
org.apache.catalina.connector.RequestFacade$GetSessionPrivilegedAction.run(RequestFacade.java:216)

    at 
org.apache.catalina.connector.RequestFacade$GetSessionPrivilegedAction.run(RequestFacade.java:205)

    at java.security.AccessController.doPrivileged(Native Method)

    at 
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:894)

    at 
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:909)

    at 
javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:238)

    at 
com.mycompany.myfilter.SaasComponentImpl.getTenantId(SaasComponentImpl.java:284)

The excepted behaviour is to redirect the user to the login form and when the 
user logs in redirect him to the requested protected resource.

But the weird thing is this works correctly if the first request send to the 
rebooted server ask for the login form!!! It seems that after this tomcat find 
and load correctly the cookie class and then all the request are handled as 
expected.

Why tomcat cannot find the Cookie class that is for sure in the 
lib/servlet-api.jar? IMHO, no mmetter when this class is asked to be load for 
the first time ... it should be there for any valve, servlet, filter, etc ... 
I'm right?

PS: This was working fine before the app was migrated from tomcat 6.

Reply via email to