小ネタ千夜一夜 第4夜 Glassfishは再配備時にセッション維持するんだぜ?


Java使いはみんな知っていると個人的には思っていたGlassfishのアプリ再配備時のセッション維持機能。

どうもid:yone098さんは知らなかったらしい。


まず、NetBeansの設定を表示してみる。赤く囲んだところが注目ポイントだ!


続いてGlassfishの管理ツール。赤く囲んだところにチェックを入れるのだ!


Javaコードは以下のとおり。

public class Index extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        HttpSession s = request.getSession();
        s.setAttribute("session", "セッションに値をセットしてるぜー");

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Index</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1> " + s.getAttribute("session") + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally { 
            out.close();
        }

    } 
〜省略〜

一度実行した後、セッションをセットする部分をコメント化して再配備。

ちゃんとセッションのメッセージが出る。

配備解除後に配備だともちろん、セッションは空っぽになる。今回の例では「null」と表示される。

ロジックの修正とかした場合、すぐに不具合が出たURLから処理の続行が出来るので開発効率はいいかも。ログインからやり直すとか面倒なことがないからね!