StrutsのAction#execute()でメソッドの開始・終了でログを出したい。またテスト環境での出力のみで本番環境では不要ということで、AspectJを試してみた。EclipseにAJDTを入れた。
しかし、どうもうまくやりたい処理を追加できない。
pointcut atActionExecute(): execution(public ActionForward *.execute(..));
などと書いてみるのだが、駄目。
試しに全部のpublicメソッドにpointcutをつけてみる。
pointcut atPublicMethod(): execution(public * *.*(..));
これをAJDTのCross Referenceというので見ると、どこにpointcutが設定されたか確認できるのだが、見てみると、普通のpublicメソッドには設定できているが、Action#execute()には設定できていない。
execute()はStrutsから呼ばれるメソッドなので、ここにpointcutを入れるにはStrutsのクラスファイルを修正しないといけないからできないとか、そういう理由なんだろうか?
原因を調査する時間もなかったので、Action#execute()の代わりに、FilterのdoFilter()でログを出すようにしてごまかしてしまった。POSTされたパラメタなどはそれでも出せるので。