jboss 5.1プロキシサーバーにアプリケーション(war)をデプロイしています。
ログアウトサーブレットをjbossデプロイディレクトリに配置し、server / default / deployers / jbossweb-deployer / web.xmlにマッピングして、デプロイされたすべてのアプリが使用できるようにしました。ユーザーがベースURLを使用してサイトにアクセスできるようにする必要があります。
http://ourAwesomeSite/
対戦争名:
http://ourAwesomeSite/ourAwesomeApp.home.seam
これを行うために、これをdeploy / ROOT.war/index.htmlに追加しました。
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/ourAwesomeApp"/>
しかし、ログアウトサーブレットが正しく機能しなくなりました。
doGetメソッドのセッションは常にnullであるため、セッションを無効にすることはできません。ユーザーはログアウトし、現在のセッションは無効にならず、(ブラウザーが閉じられていない限り)後でログインしたユーザーは前のユーザーのセッションを取得します。LogoutServlet:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException,
ServletException {
System.out.println("********************** logout servlet");
HttpSession session = request.getSession(false);
// session is always null
if (!this.isSessionInvalid(request) && session != null) {
System.out.println("invalidating user session ... maybe");
session.invalidate();
}
System.out.println("redirecting to SSO logout");
response.sendRedirect("https://ssologoutpage/logout.html");
}
server / default / deployers / jbossweb-deployer / web.xmlエントリとマッピング:
<servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>com.whatev.log.security.session.management.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/web/logout.html</url-pattern>
<url-pattern>/logout.html</url-pattern>
</servlet-mapping>
リクエストセッションがどのようにnullに設定されているのかわかりません。誰かアイデアはありますか?