Mule フローの周りにアスペクトをラップしようとしています。@Around
つまり、何かが Mule フローに入ったときにトリガーされる を定義して、独自の統計収集を実行できるようにしたいと考えています。ラップアラウンドする簡単な「フロー」クラスは見つかりませんでしたが、それMessageReceiver
が良いクラスであるか、少なくともこのクラスの実装であることがわかりました。
ただし、私は AspectJ の専門家ではないため、これを機能させることができません。私は@Aspect
このようなメソッドを持つクラスを持っています。
@Around("execution(public * org.mule.api.transport.MessageReceiver+.*(..))")
public Object addMonitor(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("Before");
Object object = pjp.proceed();
System.out.println("After");
return object;
}
HttpMessageReceiver
しかし、メソッドが呼び出されたときに印刷する前/後の文字列を取得できません。フローにデバッグ ポイントを設定しorg.mule.transport.AbstractMessageReceiver.routeMessage(MuleMessage message)
、それが呼び出されていることを確認できます。これは の実装ですMessageReceiver
が、アスペクトへの呼び出しは見られません。
Mule でこの種のアスペクトを実行することは可能ですか?
//編集: 前述のとおり、私は AspectJ と AOP を初めて使用するので、@Aspect
クラスを処理するために Mule でスプリングを使用していると言えます。これがSpringで処理されたBeanで機能する例がありますが、Springで管理されていない通常のPOJOでは機能しません。私のSpring構成は次のようになります:
<spring:beans>
<context:component-scan base-package="com.example" />
<context:annotation-config />
<aop:aspectj-autoproxy />
</spring:beans>