[Seasar-user:21478] Re: S2JDBC の Interceptor はどうすれば良いのでしょうか。

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2012年 9月 26日 (水) 16:08:53 JST


小林様

ご回答ありがとうございます。

確かに、form()の時間計測しても意味無いです。
S2JDBCで、SQLの発行時間を計測するのは無理なのですね。残念です…

全SQL発行処理の前後に時間を計測するか、S2Daoを使うか、P6Spyで計測するかを検討いたします。

お時間を頂きありがとうございました。


2012/09/24 (Mon) 13:51, "Koichi Kobayashi" <koichik @ gmail.com> wrote:
> 小林 (koichik) です.
> 
> S2JDBC というか JdbcManager にインターセプタを
> 適用することは可能ではありますが、それでは
> やりたいことはできないはずです。
> 典型的なコード:
> 
> List<Foo> results = jdbcManager.from(Foo.class)
>                               .where(...)
>                               .getResultList();
> 
> これは
> 
> AutoSelect<Foo> select = jdbcManager.from(Foo.class);
> select.where(...);
> List<Foo> results = select.getResultList();
> 
> と同じであり、JdbcManager に適用されたインターセプタが
> 呼ばれるのは、最初の from() の呼び出しだけです。
> この時間を計測しても意味はないでしょう。
> 
> 一方、JdbcManager#from() が返す AutoSelect<T> は
> S2Container で管理されていないため、インターセプタを
> 適用することはできません。
> 
> 処理時間の大部分は RDBMS に SQL を発行している時間に
> なるでしょうから、P6Spy などを使って JDBC ドライバの
> ところで時間を計測するのがいいのではないでしょうか。
> 
> http://sourceforge.net/projects/p6spy/
> 
> 
> Date: Thu, 20 Sep 2012 09:47:16 +0900
> From: pianyi @ mail.goo.ne.jp
> Subject: [Seasar-user:21472] Re: S2JDBC の Interceptor はどうすれば良いのでしょうか。
> 
> > 小林様
> > いつもお世話になっております。
> > 
> > 説明が下手で申し訳ありません。
> > 
> > 「S2JDBCでインターセプタの設定は出来ないか?」と言う質問になります。
> > 
> > 昔「S2Struts + S2Dao」の環境の時は「daoCustomizer」があったので、
> > S2JDBCの場合、「daoCustomizer」に変わる機能または実装方法を教えて頂きたく思います。
> > 
> > 今回、S2Daoは使用していません。
> > 
> > 解りづらく申し訳ありません。
> > 以上、よろしくお願いいたします。
> > 
> > 
> > 2012/09/20 (Thu) 02:47, "Koichi Kobayashi" <koichik @ improvement.jp> wrote:
> > > 小林 (koichik) です.
> > > 
> > > SAStruts + S2JDBC の場合は Dao を使わないことが
> > > 多いかと思うのですが,Dao を SMART deploy で
> > > 使っているのですか?
> > > もし使っているのなら daoCustomizer でインターセプタを
> > > 設定することができるはずです.
> > > 
> > > Dao を使っていても SMART deploy になっていないなら,
> > > Dao を定義している方法 (dicon に直接書いているのか
> > > AutoRegister を使っているのか等) によってインターセプタの
> > > 設定方法も変わります.
> > > 
> > > 
> > > On Wed, 19 Sep 2012 12:05:26 +0900, pianyi @ mail.goo.ne.jp wrote:
> > > 
> > > > いつも大変お世話になっております。 
> > > > pianyi と申します。 
> > > > 
> > > > 現在、SAStrus2.4.44 + S2JDBCを使って開発を行っております。
> > > > 
> > > > 今回、処理時間にシビアなユーザーの為、Action、Service、(Logic)、SQLの各箇所で処理時間計測し、
> > > > 速度改善に役立てたいと考えておりますが、S2JDBCにInterceptor を追加することは出来ないのでしょうか?
> > > > 
> > > > ActionとServiceには、Interceptor の追加は出来ました。
> > > > また、以前S2Daoで行ったことがあるため、同じように、"daoCustomizer"に追加しましたが呼び出されませんでした。
> > > > 
> > > > 別のやり方があるのでしょうか。
> > > > 間違い、別の良い方法等ございましたらご教授願います。
> > > > 
> > > > 以上、よろしくお願いいたします。
> > > > 
> > > > 
> > > > 以下、設定を載せて置きます。
> > > > 
> > > > 
> > > > *********************** customizer.dicon ***********************
> > > > <component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
> > > >     <initMethod name="addAspectCustomizer">
> > > >         <arg>"dbAccessLogInterceptor"</arg>
> > > >     </initMethod>
> > > > </component>
> > > > 
> > > > 
> > > > *********************** ログ出力クラス ***********************
> > > > public class DbAccessLogInterceptor extends AbstractInterceptor {
> > > >     private final Logger logger = Logger.getLogger(getClass());
> > > >     @Override
> > > >     public Object invoke(MethodInvocation invocation) throws Throwable {
> > > >         Object result = null;
> > > >         // 時間計測(開始)
> > > >         double startTime = 0;
> > > >         try {
> > > >             startTime = System.nanoTime() / (1000 * 1000);
> > > >             result = invocation.proceed();
> > > >         } finally {
> > > >             double endTime = System.nanoTime() / (1000 * 1000);
> > > >             String name = getTargetClass(invocation).getSimpleName() + "#" + invocation.getMethod().getName();
> > > >             logger.debug("実行メソッド名:" + name + " 処理時間:" + (endTime - startTime) + "ミリ秒");
> > > >         }
> > > >         return result;
> > > >     }
> > > > }
> > > > _______________________________________________
> > > > 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
> > > 
> > _______________________________________________
> > 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
> 


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