【发布时间】:2016-12-06 08:54:18
【问题描述】:
让 WSO2 5.0.0 尝试使用 JDBC 消息存储实现存储和转发模式。
向目标端点发送消息会引发异常:
TID: [-1234] [] [2016-12-05 23:25:24,874] ERROR {org.apache.synapse.message.processor.impl.sampler.SamplingService} - Error occurred while executing the message {org.apache.synapse.message.processor.impl.sampler.SamplingService}
org.apache.synapse.SynapseException: Unexpected error during sending message out
at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:257)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:84)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:548)
at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:382)
at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65)
at org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:55)
at org.apache.synapse.mediators.builtin.CallMediator.handleNonBlockingCall(CallMediator.java:221)
at org.apache.synapse.mediators.builtin.CallMediator.mediate(CallMediator.java:99)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.message.processor.impl.sampler.SamplingService$1.run(SamplingService.java:211)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:538)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:78)
... 15 more
我认为我缺少重要的传输、Axis2 或 Synapse 属性,但我找不到哪个。
要存储和转发的序列是here。
我试图找出 in the source codes 可能导致 NullPointerException 的原因,但对我来说这没有任何意义,因为定义了 httpMethod 和 messageType。
谢谢大家的提示
编辑: 根据评论,正在使用的 Synapse 源是 here。
【问题讨论】:
-
哦,感谢您的更新。解决此问题的最佳方法是什么?看起来 originalInMsgCtx 或 getOperationContext() 可能为 null :(
-
嗯。我想很可能 originalInMsgCtx.getOperationContext() 为空。如果 originalInMsgCtx 为空,您应该在到达该行之前获得 NPE
-
我认为您可以通过将消息从计划任务注入代理服务而不是注入序列来解决此问题。在代理服务内部,可以调用您的序列。你可以这样试试吗?
-
好主意,我试试看。