[Seasar-user:17015] [SAStruts]Exceptionの扱い
Shinzo SAITO
[E-MAIL ADDRESS DELETED]
2009年 3月 2日 (月) 11:48:24 JST
齊藤新三と申します。
お世話になります。
下記の例を使って、別の質問をさせていただきます。それは、例外に関してです。
下記の例で、DataAccessExceptionが発生したとします(他の例外でもいいのですが)。従来のStrutsでしたら、struts-config.xmlのglobal-exceptionsに記載しておけば、Strutsが処理してくれました。SAStrutsでも同様のことが可能ですが、他にお勧めの方法はございますでしょうか?
お手数ですが、よろしくお願いします。
2009/02/27 15:31 Shinzo SAITO <[E-MAIL ADDRESS DELETED]>:
> 齊藤新三と申します。
> お世話になります。
>
> S2JDBCのトランザクション制御に関してお尋ねいたします。
>
> S2AbstractServiceを継承した2コのServiceクラス、
> Hoge1ServiceとHoge2Service
> があるとします。この中に、データアクセスロジックが記載された
> Hoge1Service#findByPK(Integer code)
> Hoge2Service#findByUser(String name)
> というメソッドがあるとします。これに、S2AbstractServiceから継承されたメソッドupdateも使用して、(SAStrutsの)Actionクラスでひとつのトランザクションとしたいと考えます。その場合、どのように記載すればいいのでしょうか。
>
> 例えば、BowActionクラスがあり、その中に上記3メソッドを使用するssEdxメソッドがあったとします。その上で、以下のようなソースコードを実行した場合、例外が発生し、「[ESSR0316]ネストしたトランザクションはサポートしていません」というメッセージが出てしまいます。
>
> public class BowAction {
> @Resource
> public UserTransaction userTransaction;
> @Resource
> public Hoge1Service hoge1Service;
> @Resource
> public Hoge2Service hoge2Service;
> @Execute(validator=false)
> public String ssEdx() {
> 〜〜〜省略〜〜〜
> try {
> userTransaction.begin();
> Hoge1Entity entity1 = hoge1Service.findByPK(code);
> Hoge2Entity entity2 = hoge2Service.findByUser(name);
> 〜〜〜省略〜〜〜
> hoge2Service.update(entity);
> userTransaction.commit();
> }
> catch(Exception ex) {
> throw new DataAccessException(ex);
> }
> 〜〜〜省略〜〜〜
> }
> }
>
> このように、Serviceクラスの複数のメソッドをひとつのトランザクションでくくりたいときの記述方法を教えていただけますでしょうか。
>
> ところで、ロールバックに関してですが、当初、上記のソース例で行きますと、catch節内に
> userTransaction.rollback();
> を記述していましたが、これも例外が発生しています。ソースを追っていきますと、どうも、例外が発生した場合は自動でロールバックするようになっているみたいですが、その認識で問題ないでしょうか?つまり、userTransaction.rollback();をいちいち記載しなくても、例外を発生させておけば、ロールバックは自動でしてくれるという認識です。ちなみに、DataAccessExceptionはRuntimeExceptionを継承しています。
>
> 以上、お手数ですが、よろしくお願いします。
>
> --
> ***********************
> 齊藤 新三
> E-mail [E-MAIL ADDRESS DELETED]
> ***********************
>
--
***********************
齊藤 新三
E-mail [E-MAIL ADDRESS DELETED]
***********************
Seasar-user メーリングリストの案内