[Seasar-user:209] Rulet 内で呼び出した Sqlet の rollback(Sqlet 機能を切り出して利用したい )

B yahoo.co.jp sue suna066
2003年 11月 25日 (火) 02:33:39 JST


こんにちは。sueです。

前回の質問(Sqlet 機能を切り出して利用したい)では詳しい
解説をありがとうございました。ひがさんの助言を参考に
SeasarのConnectionPoolを使う方法で試してみましたところ、
下記の設定で正常にSeasar経由のDBアクセスが出来ることを
確認しました。

[設定内容]
・WEB-INF/web.xmlにload-on-startup:0でサーブレットを定義
・WEB-INF/classes/seasar-config.xmlを配置
  :JMXService
  :RMIAdaptorService
  :NamingService
  :TransactionService
  :ConnectionPoolService
・WEB-INF/classes/seasar-context.xmlを配置
  :jndiNameはconnectionpool-config.xmlの設定と合わせた内容
・[tomcat-home]/common/classes/connectionpool-config.xmlを配置
(RDBMSの接続先を変える際にwarを展開したくなく、又tomcat内では
 当アプリのみ乗せることを前提で上記の位置に配置)

次のステップとしてトランザクションに関する検証をおこなっている
のですが、新たに2点ほど疑問点が沸いてしまいました。
基本的なことかも知れませんが、何卒アドバイスを頂けませんで
しょうか?


[質問1]
以下の実装を検討しています。
DBに対してのUPDATE文含むトランザクション処理。UPDATE文を発行
した後、ロジックでホゲホゲしてその中で処理エラーが発生した
場合は、発行したUPDAT文をロールバックさせる。UPDATEの部分は
SQLETにて実装。

ドキュメントを読ませていただいた結果、
・トランザクション全体の処理をRuletで実装しRequiresNewTxとする
・RuletからSqletを呼び出す
・呼び出されるSqletはtransAttribute属性はつけない
とするのが良いかな?と考えたのですが如何なものでしょうか?
(後々、Ruletの部分はFlowletに置き換えたいと考えています。。。)


[質問2]
件名の質問なのですが、Rulet内で意識的にトランザクションを
rollbackさせたい処理があります。実際に試してみたところ、
Rulet内で明示的にSeasarExceptionをthrowすることにより
制御が出来ているようなのですが、この方法で問題ありません
でしょうか?


以上です。


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/




Seasar-user メーリングリストの案内