EclipseLinkのクラスのメソッドを乗っ取ったり傍受したりしようとしています。Spring AOPとAspectJを試しましたが、失敗しました。以下のようにメソッドMyの実装org.eclipse.persistence.internal.localization.i18n.TraceLocalizationResource
を呼び出しているときにクラスが例外をスローしたときに何かをしたい:getString(..);
@AfterThrowing(pointcut = "execution(* org.eclipse.persistence.internal.localization.i18n.TraceLocalizationResource.getString(..))",throwing="error")
public void logAfterThrowing(JoinPoint joinPoint,Throwable error) {
....
}
そしてcalssTraceLocalizationResource
が呼び出されました(私はそれにデバッグします)。しかし、ハイジャックメソッドは呼び出されませんでした。
私の質問:
- 私はそれを間違った方法でやっていたのですか?
- ハイジャックまたはインターセプトするターゲットクラスは、自己定義型である必要がありますか?
- java.lang.StringのようなJDKのクラスをハイジャックしたい場合はどうなりますか?