[Seasar-user:4626] Re: 自動設定される実装クラスのメソッドに対するトランザクション定義について

ITO Yoshiichi [E-MAIL ADDRESS DELETED]
2006年 9月 16日 (土) 14:29:13 JST


こんにちは。
伊藤 (GLAD!!) です。

> http://s2container.seasar.org/ja/DIContainer.html#ComponentAutoRegister
> でのコンポーネントの自動登録した場合のトランザクション定義は可能でしょうか?

AspectAutoRegister でインターセプタを登録する必要があるのでは?
http://s2container.seasar.org/ja/DIContainer.html#AspectAutoRegister
で aop.traceInterceptor になっているところを j2ee.requiredTx などに
変更すればよいと思います。

これを記述したら、最後の SampleServiceImpl の登録は不要ですね。

ところで、findSample は j2ee.notSupportedTx で大丈夫なのでしょうか?

> アスペクトを適用されるコンポーネントは、
> アスペクトの自動登録の設定よりも後に記述する必要があります。

って書いてあるけれど、すぐ下の例が逆ですよね。>koichikさん(?)


06/09/15 に 中西 康代<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 基本的な質問で恐縮なのですが、
> トランザクション定義について質問があります。
>
> 環境は、
>  J2SE5.0
>  tomcat5.5
>  HSQLDB
>  S2hibernate1.1.2
>  S2Struts1.2.3
>
> http://s2container.seasar.org/ja/DIContainer.html#ComponentAutoRegister
> でのコンポーネントの自動登録した場合のトランザクション定義は可能でしょうか?
>
>
> Daoインターフェース(例:SampleDao)ごとにトランザクション定義及び、
> それらのメソッドを使用したクラス(例:SampleServiceImpl)を以下のように設定す
> るこ
> とで、
> 個々にトランザクション定義ができています。
>
> 例)
> --------------------------------------------------------------------
> <?xml version="1.0" encoding="Shift_JIS"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN"
>        "http://www.seasar.org/dtd/components23.dtd">
> <components>
>        <include path="j2ee.dicon"/>
>        <include path="sample/dicon/SampleDao.dicon"/>
>        <component name="SampleService"
> class="sample.service.impl.SampleServiceImpl">
>            <aspect pointcut="saveSample">j2ee.requiredTx</aspect>
>            <aspect pointcut="deleteSample">j2ee.requiredTx</aspect>
>            <aspect pointcut="updateSample">j2ee.requiredTx</aspect>
>            <aspect pointcut="findSample">j2ee.notSupportedTx</aspect>
>        </component>
> </components>
> --------------------------------------------------------------------
>
>
> ただ、コンポーネントの自動登録した場合のトランザクション定義を
> 色々なサイト等で調べてみたのですが、動作しない状況です。
>
> 記述方法がわるいのか、別の実装方法があるのかもわかっていない状況です。
> 説明がわかりにくい箇所も多々あると思いますが、宜しくお願い致します。
>
> 例)
> --------------------------------------------------------------------
> <?xml version="1.0" encoding="Shift_JIS"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
>        "http://www.seasar.org/dtd/components.dtd">
> <components>
>  <include path="sample/dicon/SampleDao.dicon"/>
>
>  <!-- auto registration -->
>  <component
>
> class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
>
>    <property name="autoNaming">
>      <component
> class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
>    </property>
>    <initMethod name="addClassPattern">
>      <arg>"sample.service.impl"</arg>
>      <arg>".*ServiceImpl"</arg>
>    </initMethod>
>  </component>
>
>  <component name="traceInterceptor"
>    class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
>
>  <component class="sample.struts.SampleAction">
>    <aspect pointcut="check">
>      traceInterceptor
>    </aspect>
>  </component>
>
>  <component name="SampleService"
> class="sample.service.impl.SampleServiceImpl">
>  <aspect pointcut="saveSample">j2ee.requiredTx</aspect>
>          <aspect pointcut="deleteSample">j2ee.requiredTx</aspect>
>          <aspect pointcut="updateSample">j2ee.requiredTx</aspect>
>          <aspect pointcut="findSample">j2ee.notSupportedTx</aspect>
>   </component>
> </components>
> --------------------------------------------------------------------
>



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