[Seasar-user:12398] 【S2Container】DbSessionStateManagerImpl拡張のための修正依頼

Akira Nishikata [E-MAIL ADDRESS DELETED]
2008年 1月 7日 (月) 21:41:45 JST


お世話になります。西方と申します。

現在作成中のWebシステムで、
  Javaアプリ⇔Javaアプリ⇔.NETアプリ
の3システム間でセッション情報の共有化を行う必要があり、
S2のDBSessionレプリケーション機能の評価を行っております。

はじめはJava側でシリアライズしたオブジェクトを.NETでシリアライズしようと
したところ、ノウハウが無いせいもあり上手くいきませんでした。

そこで、
Java側【文字列】 → .NET側
のようにXMLなどの非シリアライズ文字列ベースで受け渡しを行おうとしたのですが、
S2内部で文字列もシリアライズされてしまうため、.NET側で復元することが出来ません。


よってDbSessionStateManagerImplの独自拡張を行いたいのですが、
拡張しやすくは出来ていないようです。


そこで以下の対応をお願いしたいです。

◆ DbSessionStateManagerImpl
==============================================================================
【1】ObjectをBinary化する箇所をprotectedメソッド化して欲しい。

byte[] value = SerializeUtil.fromObjectToBinary(sessionState
                        .getAttribute(name));
    ↓
protected byte[] fromObjectToBinary(String sessionId, String name, SessionState sessionState) {
    return SerializeUtil.fromObjectToBinary(sessionState.getAttribute(name));
}


【2】DbSessionStateManagerImpl
SessionStateのインスタンスを生成している箇所をprotectedメソッド化して欲しい。
(SessionStateをOverrideするため)

return new SessionState(binaryData);
    ↓
protected SessionState createSessionState(Map binaryData) {
    return new SessionState(binaryData);
}

==============================================================================

◆ SessionState
==============================================================================
BinaryをObjectに復元する箇所をprotectedメソッド化して欲しい。

Object value = SerializeUtil.fromBinaryToObject(binary);
    ↓
protected Object fromBinaryToObject(byte[] binary) {
    return SerializeUtil.fromBinaryToObject(binary);
}
==============================================================================

◆ SessionFilter
==============================================================================
Cookieに書き出すところをprotectedメソッド化したい。
 (ドメイン属性にサブドメインを指定したクッキーを利用したいため)

SessionIdUtil.writeCookie(requestWrapper, responseWrapper,
                requestWrapper.getSessionId());
    ↓
protected void writeCookie(...) {
    SessionIdUtil.writeCookie(requestWrapper, responseWrapper, requestWrapper.getSessionId());
}

==============================================================================

◆ SessionIdUtil
==============================================================================
SESSION_ID_KEYをプロジェクト固有のものにしたい。
==============================================================================

以上、ご検討のほどよろしくお願いいたします。


-----------------------------------------
株式会社ビルドシステム 業務システム開発部

西方 彬 <[E-MAIL ADDRESS DELETED]>
-----------------------------------------



Seasar-user メーリングリストの案内