RequestContext.getEvent()时Mule返回null

时间:2013-12-07 00:21:21

标签: mule

org.mule.component.BindingInvocationHandler调用方法期间,Mule尝试从RequestContext.getEvent();获取当前事件 但价值是空的,我们得到NullPointerException。 将CurrentEvent的{​​{1}}设置为null的原因是什么?

更新:我们使用java.util.concurrent.ExecutorService来调用BindingInvocationHandler绑定的方法。

1 个答案:

答案 0 :(得分:2)

RequestContext.getEvent()使用ThreadLocal来查找正在进行的事件,所以也许你是在一个不是处理MuleEvent的线程中调用它的?

如果是这种情况,您可以尝试克隆事件,然后将其传递给您的线程,并使用RequestContext.setEvent(xxx)将其重新建立为当前事件。

期待动荡,因为这不是一件小事,尽管Mule在内部做到这一点。

在事件上使用newThreadCopy()获取一个副本,该副本可由另一个Mule线程处理,而不会抛出异常。