現在のプロジェクトで奇妙な問題に直面しています。
Glassfish3.1サーバーに複数のSpringMVCベースのWebアプリをデプロイしました。どのアプリケーションであるかに関係なく、それぞれのweb.xmlの「セッションタイムアウト」パラメーターに基づいてユーザーを「タイムアウト」できる必要があります。ユーザーがオンになっています。アプリケーションが別々のWARにある理由を尋ねないでください-アーキテクチャはそうです。ユーザーはWebAppAを介してログインし、WebApp Bにリダイレクトされます。その後、ユーザーはさまざまなWebアプリにジャンプし続けることができます。WebAppBなどにも多数のAjax呼び出しがあります(私はそこに行くことすらありません)。質問は、WebAppAとWebAppBの間でセッションデータを共有できないという事実に要約されます(私はここで間違っている可能性があります-そしてこれは私が助けを必要としているところです)そして私は何も持っていませんチェックして知る方法
httpServletRequest.getSession(false)
WebAppBでは、最初のリクエストがWebAppBにヒットした場合と、セッションタイムアウトの「後」の最初のリクエストの場合の両方でnullが返されるためです。WebAppAのセッションに「何か」を保持し、WebAppBのセッションにその存在を確認する必要があります。これにより、Webアプリケーション内でのセッションデータの共有の問題に戻ります。DBストレージを使用することはできません。これは、すべてのリクエストでDB呼び出しを行うことを意味するためです。Tomcatの「crossContext」がそのようなシナリオで役立つという方向性をグーグルで調べましたが、Glassfishではこのようなものが役立ちます(最近見つけたsun-web-app.xmlの「crossContextAllowed」プロパティがあります)。
私はかなり長い間これに悩まされてきました、そしてこれがあなたの時間の価値がある質問であるかどうかさえわかりません-それで助けてくれてありがとう。
トリシューラ