忍者ブログ

「クラスタ環境とセッションとSerializableの関係」の詳細記事: Javaってまだいけますか

Javaってまだいけますか

いっぱいいっぱいで無理なので学んだ事をいちいちメモっていくブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Navigation

クラスタ環境とセッションとSerializableの関係

お恥ずかしながら、今までSerializableについてあまり意識してませんでした。
「RMIで受け渡すオブジェクトとかでは宣言しとけばいいのかな…」ぐらいの軽い気持ちでした。

しかし、従事していたプロジェクトでこれが原因の不具合が発生してしまいました。
要はクラスタ環境で稼動しているアプリケーションで、Serializableを実装していない属性がセッション情報に格納されており、セッションレプリケーションが行なわれないという現象でした。
ローカルや検証環境ではクラスタ構成を組むことが無いので気づきづらいですよね…。

開発規約として「Serializableを実装しましょう」では弱いので、こんな感じで専用クラスを作って利用を強制する方がよいでしょうか。
(EclipseでHttpSession.setAttributeを検索すればチェックできますし。)

public class SessionManager {

/**
* セッションにSerializableを実装したオブジェクトを格納します。
*
* @param request
* @param name
* @param value
*/
public static void setAttribute(HttpServletRequest request, String name, Serializable value) {
request.getSession().setAttribute(name, value);
}

/**
* セッションからSerializableを実装したオブジェクトを取り出します。
* @param request
* @param name
* @return
*/
public static Serializable getAttribute(HttpServletRequest request, String name) {
return (Serializable) request.getSession().getAttribute(name);
}
}

テストフェーズにクラスタ環境を意識したテストをしておくことも重要ですよね。
反省。

SerializableなクラスのメンバもSerializableな必要があるようですがjava.lang.Stringやプリミティブ型のほか、Java標準のコレクションなどであれば問題ないようです。(ArrayList.subList()の戻り値など、一部例外有り)

その他参考にしたサイト

Serializableについて
Serializableについて(java API)

Tomcat5でのクラスタリングについて

ググってみるといろんな方がブログで取り上げてるので、結構みんな一回は通る道っぽいですねw
PR

Navigation

「クラスタ環境とセッションとSerializableの関係」にトラックバックする

「クラスタ環境とセッションとSerializableの関係」へのトラックバック

「クラスタ環境とセッションとSerializableの関係」へのコメント

「クラスタ環境とセッションとSerializableの関係」にコメントする

コメント作成

Navigation

Copyright ©  Javaってまだいけますか  All Rights Reserved.
  • 忍者ブログ
  • [PR]

menu

ブログ内検索

カテゴリー

カウンター

忍者アド

リンク

最新CM

[07/17 セバ]
[12/27 NONAME]

最新記事

(10/15)
(10/01)
(08/12)
(08/12)
(08/11)

プロフィール

HN:
takacy.k
年齢:
37
性別:
男性
誕生日:
1979/08/13
趣味:
自己紹介:
個人的なメモですので、投稿内容について真偽を保証するものではありません。また、当ブログの内容をご利用になったことによる(以下略)

最新TB

RSS

アーカイブ

アクセス解析