[java][seasar] JdbcManager に Interceptor を織り込む
SAStruts で JdbcManager に Interceptor を織り込もうと画策。
まず、app.dicon にて
<component name="jdbcManager" class="org.seasar.extension.jdbc.JdbcManager"> <aspect pointcut="toString"> <component class="org.seasar.framework.aop.interceptors.TraceInterceptor" /> </aspect> </component>
そして、試しにこんなコードを。
public JdbcManager jdbcManager; @Execute public String update() { jdbcManager.toString(); return "update.jsp"; }
しかし、これだと TraceInterceptor がちゃんと動いてくれなかった。
しばし試行錯誤で動かしてみるも、どうも Interceptor が織り込めない。暗黙的なコンポーネントには織り込めないのかと思ったけど、いや、そうじゃないでしょうと思って、気付いた。
s2jdbc.dicon に設定してやらないとダメでした。
<component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl"> <property name="maxRows">0</property> <property name="fetchSize">0</property> <property name="queryTimeout">0</property> <property name="dialect">postgreDialect</property> <aspect pointcut="toString"> <component class="org.seasar.framework.aop.interceptors.TraceInterceptor" /> </aspect> </component>
したらば、ちゃんとログが出ましたよ!
DEBUG 2008-03-10 23:39:34,250 [http-8080-1] BEGIN org.seasar.extension.jdbc.manager.JdbcManagerImpl#toString() DEBUG 2008-03-10 23:39:34,250 [http-8080-1] END org.seasar.extension.jdbc.manager.JdbcManagerImpl#toString() : org.seasar.extension.jdbc.manager.JdbcManagerImpl$$EnhancedByS2AOP$$ca2369@1f4bf33
s2jdbc.dicon の存在をすっかり忘れてました。一度設定したら、あとは見なくなっちゃうからなあ。いかん、いかん。