AspectJ围绕Mule MessageReceiver

时间:2013-04-09 19:04:12

标签: aspectj mule spring-aop

我正在寻找围绕Mule Flow的一个方面,IE我想定义一个@Around,当某些东西进入Mule流时会被触发,这样我就可以执行自己的统计数据收集了。我没有找到一个简单的“Flow”类来包装,但我已经看到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中的方法时,我无法打印出Before / After字符串。我在我的流程中设置了一个调试点,可以看到正在调用org.mule.transport.AbstractMessageReceiver.routeMessage(MuleMessage message),这是MessageReceiver的一个实现,但我从来没有看到对Aspect的调用。

是否可以在Mule中执行此类方面?

//编辑:如上所述,我是AspectJ和AOP的新手,所以我会说我在Mule中使用spring来处理我的@Aspect类。我有一些关于Spring处理的bean的例子,但不是那些不受spring管理的常规POJO。我的Spring配置如下:

<spring:beans>
    <context:component-scan base-package="com.example" />
    <context:annotation-config />
    <aop:aspectj-autoproxy />
</spring:beans>

1 个答案:

答案 0 :(得分:0)

我需要加载时编织,因此我必须为aspectjweaver和spring-instrument添加-javaagent,并添加一个链接到我的META-INF/aop.xml类的@Aspect,但是要尽快当我这样做时,我被允许@Around("call(* org.mule.api.transport.MessageReceiver.routeMessage(org.mule.api.MuleMessage))")接听骡子的电话。