- PR -

セションタイムアウト時に。

投稿者投稿内容
たろー
会議室デビュー日: 2004/12/21
投稿数: 11
投稿日時: 2004-12-27 19:14
先程のソースにデバッグ文を幾らか追加しました。

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
System.out.println("★★★★テスト実施 スタート");
HttpSession session = request.getSession();
// セションを明示的に切断
session.invalidate();
System.out.println("★★★★テスト実施 もすぐ終わり");

// 遷移する??
RequestDispatcher rd = request.getRequestDispatcher("/jsp/index2.jsp");
System.out.println("★★★★テスト実施 まだ?終わり");
rd.forward(request, response);
System.out.println("★★★★テスト実施 終わり");

}
上記のデバック文よりRequestDisptacher#forward()でセションが新規に生成されていることがわかりました。RequestDisptacher自体インタフェースなので誰が操作しているか、これ以降の調査に行き詰まった感があります。

しかし、タイムアウトにしろ、意図的にセションを切断したにしろ、RequestDisptacher#forward()が実行されるとセションが新規に生成されるということがわかりました。

例えば、forward()先以降で継続して遷移元と同じセションを利用したくない(破棄したい)場合、遷移先のJSPで<%@ page session="false"%>を実行すれば、セションは破棄されるでしょうか??
(破棄されない場合、サーブレットコンテナ内にセションタイムアウトまでセションが残ってしまう)
試してみる価値がありそうなので、試してみますね。
たろー
会議室デビュー日: 2004/12/21
投稿数: 11
投稿日時: 2004-12-27 19:23
度々すみません。

>例えば、forward()先以降で継続して遷移元と同じセションを利用したくない(破棄したい)場合、遷移先のJSPで<%@ page session="false"%>を実行すれば、セションは破棄されるでしょうか??
>(破棄されない場合、サーブレットコンテナ内にセションタイムアウトまでセションが残ってしまう)

試してみました。
遷移先で<%@ page session="false"%>を指定するとRequestDispatcher#forward()メソッドでセションが新規生成されていないことを確認しました。

サーブレットコンテナ内にセションが溜まっていくと心配していたのですが、一連のアドバイスのおかげで解決できました。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)