[Seasar-user:7455] Re: Seasar2.4.13 rc1 リリース

Yasuo Higa [E-MAIL ADDRESS DELETED]
2007年 4月 26日 (木) 15:51:44 JST


ひがです。

> お世話になっております。小林です。
> 
> さっそくDBセッションレプリケーション機能を使わせて頂こうと思ったのですが、
DB2ではテーブルの定義をどのように行ったら良いでしょうか。
> 
> DB2(バージョン8.2)では長いバイナリを格納するにはBLOBを使う方法しかなさそうな
ので、
>  CREATE TABLE S2SESSION(
>   SESSION_ID VARCHAR(255) NOT NULL,
>   NAME VARCHAR(255) NOT NULL,
>   VALUE BLOB(10485760),
>   LAST_ACCESS TIMESTAMP,
>   PRIMARY KEY(SESSION_ID,NAME))
> というテーブルを作成したところ、DbSessionStateのgetAttributeメソッド内の
> byte[] binary = (byte[])binaryData.get(name);
> でClassCastExceptionが発生してしまいます。
> 
> BLOBにしてしまうと、binaryData.get(name)で返されるオブジェクトがcom.ibm.db2.
jcc.b.bcというクラスになるため、これがbyte[]に変換できないのが原
因だと思うので
すが、なにか回避方法などはありますでしょうか。

DBセッションレプリケーション用のDBは、あまり信頼性は要らないので
MySQLのメモリデータベースのような、信頼性よりも速度優先の
データベースのほうを使うことを推奨します。

信頼性が要らないという意味は、途中でマシンの電源が落ちるなどして
データが失われてもあまり問題にならないという意味です。

DB2で使う場合ですが、現在のS2JDBCにバグがあって、BLOBを
byteの配列で扱えないようです。

org.seasar.extension.jdbc.types.ValueTypesの146行目に
case Types.BLOB
を追加して試していただけないでしょうか。
大丈夫なようならrc2をすぐに出したいと思います。

ご迷惑をおかけしますが、よろしくお願いします。

--
Yasuo Higa
[E-MAIL ADDRESS DELETED]



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