
―BEA WebLogic Server編―
日本BEAシステムズ
プロフェッショナル・サービス
2001/4/10
| WebLogic Serverのセッション管理(応用編) |
第2回目はBEA WebLogic Server(以下WebLogic Server)におけるセッション(HttpSession)の扱いについての応用編をお送りします。
本稿におけるコーディングは、すべてJSPを前提に記述しています。また、WebLogic Server 6.0になって変更された点については脚注の形で補足させていただきます。なお、本稿ではセッションとは何かといった説明や、セッションを扱うための基礎的なプログラミングの解説は割愛させていただきますのでご了承ください。
| 1.URL rewritingによるセッション管理 |
「WebLogic Serverのセッション管理(基礎編)」に引き続いて、まずは、URL rewriting について少し補足しましょう。Servlet 2.2からはWeb Application(編注)の導入に伴いcontext pathが追加になっています。context pathとはWeb Applicationごとに固有に付加されるprefix URLです。つまりURLは下記のような構成になります。
(編注:本稿ではJ2EE Servlet 2.2 仕様で規定されているWebアプリケーション向けのアプリケーション資源管理のフレームワークを「Web Application」と表記し、WebブラウザをクライアントとしたWebアプリケーションの一般名称を「Webアプリケーション」と表記しています)
|
context pathは、Web Applicationのデプロイ時に変更される可能性があります。動的なページにURLを埋め込む際には、下記のようにコーディングすることでよりポータブルなコンテンツを作成することができます。
|
|
この例で“/order/Submit.jsp”はWeb Applicationのdocument rootからの絶対パスです。一般にWeb Applicationではdocument rootからの絶対パスでURLを記述することをお勧めします。
何らかの理由でcookieも使えず、かつformでmethod="get"を使用しなければならない場合にはsession idをhidden fieldで渡す必要があります。WebLogic Server 5.1に限定されますが、下記のようなコーディングでcookie.nameプロパティを取得しhidden fieldを生成することができます(*1)。
|
<form action="/shoppingcart/AddCart.jsp"
method="get"> |
実際にはこういったコーディングは避け、T3Services...getProperty("...")の部分はユーティリティ関数(getSessionName () など)やカスタム・タグでラッピングして詳細を隠ぺいすべきでしょう。
| クラスタリングの実現 |
本稿に関するご質問やご意見は下記のメールアドレスまでお願いします。
|
|||||||||||||||||||||||||||||||||||||||||
脚注:WebLogic Server 6.0での変更点
(*1) 前回、Cookieの場合session id名が “JSESSIONID” になったと説明しましたが、URL rewriting の場合 session id はリクエスト・パラメータとしてではなく、servlet 2.2 仕様に準拠した、';'をセパレータに“jsessionid”という名前でエンコードされるようになりました。
|
/order/Submit.jsp;jsessionid=OqXn3Ab9!-3044480099678014536!-926997315!7001!7002!-2679308213499512072!-926997316!7001!7002 |
このため、formでmethod="get"を使用する場合もsession idをhidden fieldで渡す必要がなくなりました。つまり、以下のように素直に encodeURL()を使用すればよいわけです。
|
<form action="<%= response.encodeURL
(request.getContextPath () + "/order/Submit.jsp") %>"
method="get"> |
(*2) クラスタの設定は、管理サーバ(Administration Server)上で一括して管理されるようになりました。
(*3) このようなセッション関係の設定はすべてweblogic.xml(WebLogic Server固有のWeb
Applicationデプロイメント・ディスクリプタ)で行うよう変更されています(http://www.beasys.co.jp/e-docs/wls60e/programming/weblogic_xml.html)。
(*4) Webサーバの代わりに、スティッキング機能を備えたスイッチやロード・バランサーなどのハードウェアを前に立ててクラスタリングさせることもできるようになりました
(in-cluster routing)。
(*5) (*1)のエンコードされたURLの例はクラスタリングした場合のものですが、5.1に比べコンパクト(クラスタ情報だけで約85bytes)になったのがお分かりいただけると思います。
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
