hatokuの日記: jbossのばぐ
日記 by
hatoku
jboss2.4.3で、entitybeanに対してremoveメソッドを呼んだ場合、
なぜかbeanのキャッシュにobjectが残存していて、さいど同じprimarykeyで
create後removeすると、remove内でDBへのconnectionを解放している
場合にSQLExceptionが発生する。やはりjbossのエラーだそうな。
一番最初のremoveでconnection.close()を呼んだままになってるから
当然。SunのEJB仕様によれば、ejbRemoveとejbPassivateはともに
beanをプール状態に移行するもので(つまり同じ動作)かつejbRemoveでは
ストレージに登録された実データを削除することになっている(SQLのDELETE文やね)。
で、Jbossのcommit-optionをCにした場合、beanのキッャシュを保持しない
ので、外部のトランザクションで囲まない場合は常にejbLoadかejbActivateが
走る(ハズ)。
しかしJboss2.4.3の場合、ちとこの二つの動作が異なる。
2.4.4と3.0で対応かぁ。
もちっとでソースから不具合箇所を特定出来そうなんだが、method.invoke()を
多用してるソースはむちゃくちゃ追いづらい(--;;;;;;
しかし、ソース上特定できてもなぁ、英語できないからなあ。でもこれLGPLだから
なおしたら提供しないとなぁ。翻訳ソフトにお願いしちゃうというのもなぁ。
悩むのお。
早く2.4.4リリースしてくんないかなぁ(笑)
なぜかbeanのキャッシュにobjectが残存していて、さいど同じprimarykeyで
create後removeすると、remove内でDBへのconnectionを解放している
場合にSQLExceptionが発生する。やはりjbossのエラーだそうな。
一番最初のremoveでconnection.close()を呼んだままになってるから
当然。SunのEJB仕様によれば、ejbRemoveとejbPassivateはともに
beanをプール状態に移行するもので(つまり同じ動作)かつejbRemoveでは
ストレージに登録された実データを削除することになっている(SQLのDELETE文やね)。
で、Jbossのcommit-optionをCにした場合、beanのキッャシュを保持しない
ので、外部のトランザクションで囲まない場合は常にejbLoadかejbActivateが
走る(ハズ)。
しかしJboss2.4.3の場合、ちとこの二つの動作が異なる。
2.4.4と3.0で対応かぁ。
もちっとでソースから不具合箇所を特定出来そうなんだが、method.invoke()を
多用してるソースはむちゃくちゃ追いづらい(--;;;;;;
しかし、ソース上特定できてもなぁ、英語できないからなあ。でもこれLGPLだから
なおしたら提供しないとなぁ。翻訳ソフトにお願いしちゃうというのもなぁ。
悩むのお。
早く2.4.4リリースしてくんないかなぁ(笑)
jbossのばぐ More ログイン