WAS6以上でSeasarを使っている人は注意
WAS6上でSAStruts + S2JDBCのシステムを動かしていたのですが、
この前こんなエラーが吐かれました。
java.lang.IllegalStateException: Can't overwrite cause
今まで見たことないエラーだったので、なんじゃらほいと思い調べたのですが、
どうもヒットせず。
途方にくれていたときに見つけたのが次のページ
[Seasar-user:20313] Re: WAS6TransactionManagerAdapterの問題
( ゚д゚) ・・・ (つд⊂)ゴシゴシ (;゚д゚) ・・・ (つд⊂)ゴシゴシゴシ _, ._ (;゚ Д゚) …!?
なるほど、TransactionRolledbackException は
RemoteException で、RemoteException は
- -
RemoteException のインスタンス上で Throwable.initCause(Throwable)
メソッドを呼び出した場合、常に IllegalStateException がスローされます。
- -
なのですね。勉強になりました
なのだそうです。
これはつまり、UOWManagerで予期せぬエラーが起きたときには常にIllegalStateExceptionになるということか・・・。
ひとまずIllegalStateExceptionはSeasarのバージョンをあげると解決しそう。(SNAPSHOTだけど)
ただ、これでは、真の原因がわからぬままだあ。
まあ、SNAPSHOTを使用するときちんとしたExceptionが投げられるはずなので、それを見れは何かわかるようになるかも。