6. 既存のセッションに動的に再デプロイ

GlassFishは再デプロイ後もセッションの状態を保持する機能をサポートします。この機能は Active Redeploy と呼ばれ、HTTPセッション, ステートフルEJB, EJBタイマーで有効です。

ノート

このセクションではHTTPセッションに対するActive Redeployが NetBeansと連携して、どうのように JavaEE6アプリケーション開発者の生産性を向上させるかを示します。

  1. TestServlet.java, でデータベースアクセスの前に次のコードを追記してください :
int count;
if (request.getSession().getAttribute("count") == null) {
    count = 0;
} else {
    count = (Integer) request.getSession().getAttribute("count");
}
request.getSession().setAttribute("count", ++count);
out.println("<h2>Timestamp: " + new Date() + "<br>");
out.println("Times: " + request.getSession().getAttribute("count") +
        "</h2>");

インポートをFIXしてください。このコードではこのページへのアクセス回数をセッションに保持しています。“http://localhost:8080/JavaEE6SampleApp/TestServlet” を再読み込みすると次のように表示されます。

_images/06-test-servlet1.png

“Timestamp” と “Access count” が表示されています。

サーブレットの出力結果がコピーアンドペースとしたコードのものと少し違って見えるかもしれません。

  1. Customer.java を編集して toString メソッドの実装を次のように変更してください:
return name + " (" + customerId + ")";

“[ “ が “ (“ に置換されていることに着目してください。 ファイルを保存してください。NetBeansは各ファイルが保存される度に自動的にJava EE 6プロジェクトをデプロイします。この機能は次のように “Project Properties”, “Run” の “Deploy on Save” をチェックする・しないで設定可能です。

_images/06-run.png

更新後の出力結果は次のようになります。

_images/06-test-servlet2.png

toStringの結果が正しく更新され、正常に再デプロイされているにも関わらず、セッション上のアクセス回数がインクリメントされていることに着目してください。すなわちセッションが再デプロイ後も保存されています。これにHTTPセッション(典型的にログイン情報が保存されている領域)が再デプロイしても破棄されないため、開発者の生産性を高めます。これはオプションの機能であり、NetBeansのGlassFishサーバーのプロパティを見て、“Services” タブの“Preserve Sessions Across Redeployment” を選択を外すことで無効化できます。

_images/06-check-options.png

Project Versions

前のトピックへ

5. サーブレットからデーターベースへ問い合わせ

次のトピックへ

7. サーブレットをリファクタリングし、EJBを使ってデーターベースに問い合わせ

このページ