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が投げられるはずなので、それを見れは何かわかるようになるかも。