2012-01-20 23 views
2

フォームベースの認証にj_securityを使用するアプリケーションがあります。アプリケーションが初めて配備されたとき(またはTomcatが再起動されたとき)、保護されたコンテンツに直接(ログインせずに)アクセスしようとするときに、この例外が発生します。Tomcat 7 - java.lang.NoClassDefFoundError:クラスjavax.servlet.http.Cookieを初期化できませんでした

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) 

例外は、ユーザーをログインフォームにリダイレクトすることです。ユーザーがログインすると、要求された保護リソースにリダイレクトされます。

しかし、最初の要求が再起動したサーバーに送信してログインフォームを要求すると、これは正しく動作します。このTomcatがCookieクラスを正しく見つけてロードした後、すべてのリクエストが期待どおりに処理されたようです。

なぜtomcatがlib/servlet-api.jarで確実なCookieクラスを見つけることができないのですか? IMHO、このクラスが最初に読み込まれるように求められているときには、それはどんなバルブ、サーブレット、フィルタなどにも存在するはずです...私は正しいのですか?

PS:アプリはTomcatの6

答えて

-1

から移行された前に、これは正常に動作して、あなたのアプリケーションのWEB-INF/libにサーブレット-api.jarのを持っていないことを確認してください。

これをお持ちの場合は、2つの異なるクラスローダによって読み込まれ、存在するもののような奇妙なエラーメッセージが表示される可能性があります。

それ以外の場合は、tomcatの新規インストールでアプリケーションを実行してみてください。

+0

なぜdownvoteですか?今でも、それは世話をするべきものだと確信しています。 –