[Seasar-user:21465] Re: 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2012年 9月 17日 (月) 02:04:06 JST
小林 (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 メーリングリストの案内