[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 メーリングリストの案内