[Seasar-user:8052] [Seasar]Seasar2.4系でトランザクションを扱うための設定
kondo
[E-MAIL ADDRESS DELETED]
2007年 6月 5日 (火) 09:52:38 JST
近藤です。
FxUGのフォーラムであがっていたSeasar2.4系でのトランザクションの方法に
ついて質問があります。Seasar2.4系ではトランザクションを扱うに辺り、
どのような設定を行う(またはルールで開発)するのが一般的なのでしょうか?
※私もSeasar2.3ではトランザクションを扱ったことはあるのですが、2.4系では
初めてです。
■元ネタ
http://www.fxug.net/modules/xhnewbb/viewtopic.php?viewmode=thread&topic_id=688&forum=15&post_id=3683#3683
トランザクションを扱うには、customizer.diconに以下を追加するという
情報があったのですが、設定を行った後にselect文を実行の結果、例外
が発生するとのことです。私の方でも同様の設定を行い、同じ例外発生
することを確認しました。
■customizer.dicon追加設定
<component name="s2DaoCustomizer"
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"j2ee.requiredTx"</property>
</component>
■発生した例外(元ネタのリンク先より抜粋)
java.lang.NoSuchMethodError
私の方では、上記のような設定でトランザクションを管理する方法は知らな
かったので、Seasar2.4のドキュメントを参考に、2.3で行っていた時と同様
で、1クラスにトランザクション設定を記述したdiconファイルを別途作成し、
app.diconにincludeするという方法でトランザクションを制御することが
できました。
※pointcutを使用して対象とするメソッドを限定しております。
■トランザクション設定(hoge.dicon)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="j2ee.dicon"/>
<component class="hoge.web.subapp.logic.impl.App1LogicImpl">
<aspect pointcut="insert,update,delete" >j2ee.requiredTx</aspect>
</component>
</components>
■app.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="convention.dicon"/>
<include path="aop.dicon"/>
<include path="dxo.dicon"/>
<include path="dao.dicon"/>
<include path="remoting_amf3.dicon"/>
<include path="hoge.dicon"/>
</components>
例えば、このような設定を行わずに自動的にトランザクションを実行させる
ルールがあるのでしょうか?例えばcustomizer.diconを使った方法等です。
customizer.diconの中身を見てみると、コメントで「追加するカスタマイザ名
は使用する Dao に合わせて変更してください」とあるので、何かやり方が
あるんだろうなと思っています。
S2Containerのドキュメントを調べているのですが、customizer.diconに関して
等、それらしいところが見つけられておりません。参考になるようなドキュメン
トがあれば、併せて教えていただければと思っております。
以上、よろしくお願い致します。
Seasar-user メーリングリストの案内