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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2012年 9月 16日 (日) 22:18:10 JST


小林 (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 メーリングリストの案内