[Seasar-user:21466] Re: 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して

秋穂 賢 [E-MAIL ADDRESS DELETED]
2012年 9月 17日 (月) 03:49:08 JST


To:小林さん
お世話になっております。秋穂です。
ご指南ありがとうございます。ご指摘の設定にしたところ、interceptorが稼働しました。
また、これを機にs2hibernateもSMART deploy設定としました。
共有の為、下記にcustomizer.diconの設定を記載しておきます。
  <component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
	<!-- 独自interceptor定義 -->	<initMethod name="addAspectCustomizer">		<arg>"insertInterceptor"</arg>		<arg>"insert"</arg>	</initMethod>
    <initMethod name="addCustomizer">      <arg>traceCustomizer</arg>    </initMethod>
	<initMethod name="addAspectCustomizer">		<arg>"j2ee.requiredTx"</arg>	</initMethod>
	<initMethod name="addAspectCustomizer">		<arg>"s2hibernate.interceptor"</arg>	</initMethod>
  </component>
以上です。失礼致します。
> Date: Mon, 17 Sep 2012 02:04:06 +0900
> From: koichik @ improvement.jp
> To: seasar-user @ ml.seasar.org
> Subject: [Seasar-user:21465] Re: 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して
> 
> 小林 (koichik) です.
> 
> 元々 Dao を SMART deploy で扱っていないように見えます.
> おそらく hibernate/dao.dicon に Dao の設定が以下のように
> 直書きされているのではありませんか?
> 
>     <component class="xxx.XxxDao">
>         <aspect>s2hibernate.interceptor</aspect>
>     </component>
> 
> もしそうなら,InsertInterceptor も hibernate/dao.dicon に
> 記述する必要があります.
> その際は,前述のように InsertInterceptor を
> s2hibernate.interceptor よりも前に記述してください.
> 
>     <component name="insertInterceptor" class="xxx.InsertInterceptor"/>
> 
>     <component class="xxx.XxxDao">
>         <aspect pointcut="insert">insertInterceptor</aspect>
>         <aspect>s2hibernate.interceptor</aspect>
>     </component>
> 
> 
> On Sun, 16 Sep 2012 23:47:13 +0900, 秋穂 賢 <akki_1031 @ hotmail.co.jp> wrote:
> 
> > 
> > To:小林さん
> > お世話になっております。秋穂です。
> > 早々のご回答ありがとうございます。
> > S2Hibernateのインターセプタの前にinsertInterceptorを記述して試しましたが状況は変わらず、Daoのinsert時にInsertInterceptorが起動しません。
> > 対応としてはs2hibarnateのinterceptor定義をしているs2hibernate3.diconの前にcustomizer.diconを読ませるようにapp.diconに記載しました。
> >  ※tomcat起動時のログ上でcustomizer.diconの後でs2hibernate3.diconを  読み込んでいた為、s2hibernameのインターセプタ前にInsertInterceptorを  設定したと判断しています。
> > お手数おかけしますが、ご確認の程宜しくお願い致します。
> > 【app.dicon】
> > <components>
> >   <include path="convention.dicon"/>
> >   <include path="aop.dicon"/>
> >   <include path="app_aop.dicon"/>
> >   <include path="teedaExtension.dicon"/>
> >   <include path="dxo.dicon"/>
> >   <include path="j2ee.dicon"/>
> >   <include path="customizer.dicon"/>       ←ここにcustomizer.diconを指定
> >   <include path="hibernate/dao.dicon"/>
> > </components>
> > 【customizer.diconのdaoCustomizer部分(daoCustomizerの全量)】  <component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">	<!-- 独自interceptor定義 -->	<initMethod name="addAspectCustomizer">		<arg>"insertInterceptor"</arg>		<arg>"insert"</arg>	</initMethod>
> >     <initMethod name="addCustomizer">      <arg>traceCustomizer</arg>    </initMethod>  </component>【hibernate/dao.dicon】先頭で下記をincludeしている
> >   <include path="s2hibernate3.dicon" />
> > 【s2hibernate3.dicon】<components namespace="s2hibernate">    <include path="j2ee.dicon"/>
> >     <component class="org.seasar.hibernate3.impl.S2SessionFactoryImpl" >		<initMethod name="setConfigPath">			<arg>"hibernate3.cfg.xml"</arg>		</initMethod>	</component>
> >     <component class="org.seasar.hibernate3.dao.impl.HibernateDaoMetaDataFactoryImpl"/>
> >     <component name="readOnly" class="org.seasar.hibernate3.interceptor.ReadOnlySessionInterceptor"/>
> >     <component name="interceptor"        class="org.seasar.hibernate3.dao.interceptors.S2HibernateDaoInterceptor"/>
> > </components>
> > 【tomcat起動時のログ ※抜粋】
> > 2012-09-16 23:40:52,261 [pool-2-thread-1] INFO  org.seasar.framework.container.factory.SingletonS2ContainerFactory - s2-frameworkのバージョンは2.4.43です。
> > 2012-09-16 23:40:52,263 [pool-2-thread-1] INFO  org.seasar.framework.container.factory.SingletonS2ContainerFactory - s2-extensionのバージョンは2.4.43です。
> > 2012-09-16 23:40:52,264 [pool-2-thread-1] INFO  org.seasar.framework.container.factory.SingletonS2ContainerFactory - s2-tigerのバージョンは2.4.43です。
> > 2012-09-16 23:40:52,513 [pool-2-thread-1] DEBUG org.seasar.framework.env.Env - 環境変数#Envにファイル(env.txt)から値(tct)が設定されました
> > 2012-09-16 23:40:52,650 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=cooldeploy.dicon
> > 2012-09-16 23:40:52,775 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=cooldeploy.dicon
> > 2012-09-16 23:40:52,804 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=app.dicon
> > 2012-09-16 23:40:52,811 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=convention.dicon
> > 2012-09-16 23:40:52,891 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=convention.dicon
> > 2012-09-16 23:40:52,891 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=aop.dicon
> > 2012-09-16 23:40:53,001 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=aop.dicon
> > 2012-09-16 23:40:53,001 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=app_aop.dicon
> > 2012-09-16 23:40:53,018 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=app_aop.dicon
> > 2012-09-16 23:40:53,018 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=teedaExtension.dicon
> > 2012-09-16 23:40:53,034 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=teeda.dicon
> > 2012-09-16 23:40:53,046 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=teedaErrorPage.dicon
> > 2012-09-16 23:40:53,066 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=teedaErrorPage.dicon
> > 2012-09-16 23:40:53,070 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=teedaCustomize.dicon
> > 2012-09-16 23:40:53,099 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=teedaCustomize.dicon
> > 2012-09-16 23:40:53,404 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=teeda.dicon
> > 2012-09-16 23:40:53,669 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=teedaExtension.dicon
> > 2012-09-16 23:40:53,669 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=dxo.dicon
> > 2012-09-16 23:40:53,673 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=dxo-builtin-converters.dicon
> > 2012-09-16 23:40:53,718 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=dxo-builtin-converters.dicon
> > 2012-09-16 23:40:53,721 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=dxo-tiger-converters.dicon
> > 2012-09-16 23:40:53,728 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=dxo-tiger-converters.dicon
> > 2012-09-16 23:40:53,750 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=dxo.dicon
> > 2012-09-16 23:40:53,750 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=j2ee.dicon
> > 2012-09-16 23:40:53,756 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=jta.dicon
> > 2012-09-16 23:40:53,792 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=jta.dicon
> > 2012-09-16 23:40:53,792 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=jdbc.dicon
> > 2012-09-16 23:40:53,802 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=jdbc-extension.dicon
> > 2012-09-16 23:40:53,820 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=jdbc-extension.dicon
> > 2012-09-16 23:40:53,862 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=jdbc.dicon
> > 2012-09-16 23:40:53,873 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=j2ee.dicon
> > 2012-09-16 23:40:53,873 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=customizer.dicon
> > 2012-09-16 23:40:53,878 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=default-customizer.dicon
> > 2012-09-16 23:40:53,883 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=std-customizer.dicon
> > 2012-09-16 23:40:53,915 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=std-customizer.dicon
> > 2012-09-16 23:40:53,923 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=default-customizer.dicon
> > 2012-09-16 23:40:53,938 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=customizer.dicon
> > 2012-09-16 23:40:53,938 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=hibernate/dao.dicon
> > 2012-09-16 23:40:53,948 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=s2hibernate3.dicon
> > 2012-09-16 23:40:54,035 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=s2hibernate3.dicon
> > 2012-09-16 23:40:54,102 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=hibernate/dao.dicon
> > 2012-09-16 23:40:54,108 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=app.dicon
> > 2012-09-16 23:40:54,108 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=cooldeploy-autoregister.dicon
> > 2012-09-16 23:40:54,114 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成します。path=creator.dicon
> > 2012-09-16 23:40:54,148 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=creator.dicon
> > 2012-09-16 23:40:54,153 [pool-2-thread-1] DEBUG org.seasar.framework.container.factory.S2ContainerFactory - S2Containerを作成しました。path=cooldeploy-autoregister.dicon
> > 2012-09-16 23:40:55,597 [pool-2-thread-1] WARN  org.seasar.framework.container.assembler.BindingTypeShouldDef - org.seasar.hibernate3.impl.S2SessionFactoryImplのプロパティ(interceptor)が見つからないので設定をスキップします
> > 以上です。宜しくお願い致します。
> > > Date: Sun, 16 Sep 2012 22:18:10 +0900
> > > From: koichik @ gmail.com
> > > To: seasar-user @ ml.seasar.org
> > > Subject: [Seasar-user:21463] Re: 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して
> > > 
> > > 小林 (koichik) です.
> > > 
> > > customizer.dicon の daoCustomizer の定義では
> > > S2Hibernate のインターセプタよりも前に
> > > insertInterceptor (および traceInterceptor) を
> > > 記述する必要があります。
> > > S2Hibernate のインターセプタは後続のインターセプタを
> > > 呼び出さないためです。
> > > 
> > > 記載されている daoCustomizer の定義には S2Hibernate の
> > > Dao が記述されていないので前後関係がわかりませんが、
> > > もし上記の順番になっていなければ修正して試してください。
> > > 順番が正しい場合はより詳細な情報を記載してください。
> > > 
> > > 
> > > Date: Sun, 16 Sep 2012 02:11:08 +0900
> > > From: 秋穂 賢 <akki_1031 @ hotmail.co.jp>
> > > Subject: [Seasar-user:21462] 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して
> > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > お世話になっております。秋穂と申します。
> > > > Teeda + S2hibarnate環境で開発を行っています。Daoでinsertする際に更新日時を自動で設定するinterceptorを実装しようと思っていますがうまくいかず、ご質問させて頂きました。
> > > > 当方では下記の設定をしていますが、Daoでinsertを呼び出す際にinterceptorが動きません。どのようにすればinterceptorが動くかご教授頂けますでしょうか? ※情報に不足がある場合はご指摘下さい。
> > > > ・<root-package>.interceptorパッケージにInsertInterceptorクラスを実装 (AbstractInterceptorを継承)・insertを発行する際はs2hibernateにて実施・同様な設定をcustomizer.diconのlogicCustomizerにしたところ、うまくinterceptorされました
> > > > 以下、ソースコード ※一部投稿用に修正しています。----------------------------------------
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 【xxDaoのインターフェース】 public interface XxDao {  public void insert(Entity entity); }
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 【Daoを使用するクラス】 public class xxLogicImpl implements TicketPageEditorLogic {  public XxDao xxDao;
> > > >   public void testMethod(Entity entity) {   xxDao.insert(entity); }
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 【customizer.dicon】?省略?  <component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">	<!-- 独自interceptor定義 -->	<initMethod name="addAspectCustomizer">		<arg>"insertInterceptor"</arg>		<arg>"insert"</arg>	</initMethod>
> > > >     <initMethod name="addCustomizer">      <arg>traceCustomizer</arg>    </initMethod>
> > > >   </component>?省略?
> > > > 【interceptorの実装】?省略?public class InsertInterceptor extends AbstractInterceptor {
> > > > 	private static final long serialVersionUID = 1L;
> > > > 	@Override	public Object invoke(MethodInvocation invocation) throws Throwable {
> > > > 		System.out.println("InsertInterceptor!!!!!!!!!!!!!!!!!!!!!!!!!");
> > > > 		String className = getTargetClass(invocation).getName();		System.out.println(className);
> > > > 		invocation.proceed();		return null;	}}
> > > > 以上です。お手数おかけしますが、ご確認よろしくお願い致します。
> > > >  		 	   		  
> > > 
> > > --
> > > {
> > >   name: "Koichi Kobayashi",
> > >   mail: "koichik @ improvement.jp",
> > >   blog: "http://d.hatena.ne.jp/koichik/",
> > >   twitter: "@koichik"
> > >  }
> > > 
> > > _______________________________________________
> > > Seasar-user mailing list
> > > Seasar-user @ ml.seasar.org
> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> >  		 	   		  
> 
> 
> -- 
> {
>   name: "Koichi Kobayashi",
>   mail: "koichik @ improvement.jp",
>   blog: "http://d.hatena.ne.jp/koichik/",
>   twitter: "@koichik"
> }
> 
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
 		 	   		  
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <https://www.seasar.org/archives/seasar-user/attachments/20120917/e379469e/attachment.html>


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