2011-08-13 18 views
2

長年私のプロジェクトでTomcat 6.0.26を使用していました。今度はこのプロジェクトでEL 2.2を使う必要がありましたので、Tomcat 7.0.19に移動しました(Mojarra 2.1.2-b04とRichFaces 4.0.0を使用)。私がそれを起動すると、アプリケーションが1分未満で起動されても、a4j:commandButtonまたはh:commandButtonを試してみると、ViewExpiredExceptionがスローされるまではすべて正常です(情報についてはweb.xmlで30分のセッションタイムアウトを強制しました) 。Tomcat 7.0.19とMojarra 2.1.2 ViewExpiredException

唯一のことは、アプリケーションの動作になり、この設定を変更することです:

<context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
</context-param> 

それはサーバーだったと私はクライアントにそれを変更しますが、サーバーの設定は、データ・サーバ側とドンを維持するのが最善です要求ごとにクライアントに転送しないでください。

編集:サーバーへのクライアントのように見えるViewExpiredExceptionの問題を解決しますが、ウェブサイト上でのユーザーのログイン機能はもう動作しません。それはユーザの家にログインしますが、リンクがクリックされた後は、ユーザがロガーと同じように動作します(ユーザ情報を保持するためにSessionScoped ManagedBeanを使用します)。

誰でもこのバグがありますか?

は、

アレックスをありがとうございます。

答えて

2

ビューがセッション内に存在しない場合は、ViewExpiredExceptionが表示されます。上記の症状は、セッションクッキーが維持されていないことを示しているため、すべての要求によって何らかの形でサーバーに新しいセッションを作成するよう強制されました。

Tomcat 7.0.19をターゲットとするbarebones Mojarra 2.1.2プロジェクトでローカルで問題を再現することはできません。セッションは完全にうまく維持されます。最初のリクエストでJSESSIONIDSet-Cookie応答ヘッダーが表示され、同じブラウザセッション内のすべての後続リクエストでJSESSIONIDCookieリクエストヘッダーが表示されます。それがどのように動作するはずです。だから問題は少なくともMojarra 2.1.2やTomcat 7.0.19には直接関係していません。

Firebugを使用して、自分でJSESSIONIDのCookieを確認して追跡することができます。それが私がやる最初のことです。 Cookieリクエストヘッダーを返信することを拒否するブラウザ(これはそうは思わない)か、毎回新しいSet-cookieレスポンスヘッダーを送信するサーバーであることを確認する必要があります(これはそうだと思います)。ブラウザがCookieヘッダーを送信したにもかかわらず、毎回セッションを再作成するサーバーであれば、それはコードベースのどこかに不正なHttpSession#invalidate()コールがあることを意味するだけです。デバッガーを実行して原因を特定します。

+0

ありがとうございました、あなたは正しい軌道に乗ってくれてありがとうございました。私は、Tomcat 6.0.XXでは動作しますが、Tomcat 7.0.XXでは動作しないを使用していました。私はこの属性を削除し、後で多くのドメイン名でセッションを動作させる方法を見ていきます。 –

関連する問題