在org.mule.component.BindingInvocationHandler
调用方法期间,Mule尝试从RequestContext.getEvent();
获取当前事件
但价值是空的,我们得到NullPointerException
。
将CurrentEvent
的{{1}}设置为null的原因是什么?
更新:我们使用java.util.concurrent.ExecutorService来调用BindingInvocationHandler绑定的方法。
答案 0 :(得分:2)
RequestContext.getEvent()
使用ThreadLocal
来查找正在进行的事件,所以也许你是在一个不是处理MuleEvent
的线程中调用它的?
如果是这种情况,您可以尝试克隆事件,然后将其传递给您的线程,并使用RequestContext.setEvent(xxx)
将其重新建立为当前事件。
期待动荡,因为这不是一件小事,尽管Mule在内部做到这一点。
在事件上使用newThreadCopy()
获取一个副本,该副本可由另一个Mule线程处理,而不会抛出异常。