(4) ProfilingInterceptor
Struts 2の各機能のプロファイリング機能を使うことができます。デバッグモードで起動し、リクエストパラメータにprofiling=true(またはyes)を渡すことで、Actionクラスと利用インターセプタごとの所要時間がログに出力されるようになります。一度プロファイリングモードが起動すると、以後アプリケーションが再起動されるまでプロファイリングのログ出力が有効となります。
利用するには次のようにprofilingインターセプタを追加します。
@InterceptorRefs({
@InterceptorRef("defaultStack") ,
@InterceptorRef("profiling"),
})
以下がプロファイリング機能で出力したログになります。
INFO [com.opensymphony.xwork2.util.profiling.UtilTimerStack] - [1776ms] - FilterDispatcher_doFilter:
[1753ms] - Handling request from Dispatcher
[8ms] - create DefaultActionProxy:
[8ms] - actionCreate: start
[1731ms] - invoke:
[1731ms] - interceptor: exception
[1731ms] - invoke:
[1731ms] - interceptor: alias
[1731ms] - invoke:
…(中略)…
[1724ms] - interceptor: validation
[1669ms] - invoke:
[1669ms] - interceptor: workflow
[1669ms] - invoke:
[1669ms] - interceptor: profiling
[1669ms] - invoke:
[0ms] - invokeAction: start
[1644ms] - executeResult: success
INFO [com.opensymphony.xwork2.util.profiling.UtilTimerStack] - [4ms] - FilterDispatcher_doFilter:
このように、どのインターセプタがどの順番で稼動し、処理にかかった時間もミリ秒単位で出力します。一度稼動すれば、プロファイリング機能を利用していないActionが起動されてもプロファイリングモードで出力されます。必要以上に時間がかかっているActionクラスやインターセプタを判断する際に使うことができるでしょう。
まとめ
今回でおおまかなインターセプタの紹介は一区切りになります。開発の利便性を高めてくれる機能が豊富に用意されているStruts 2ですが、それはインターセプタという形でも提供されているものであることが理解できたかと思います。また、今回紹介しきれなかったインターセプタについても、他の機能との組み合わせとして後ほど紹介していく予定です。
次回は、Struts 2の機能を拡張するStruts 2プラグインについて、代表的なものを取り上げていきます。
