2015-12-10 35 views
0

过去几天我一直在处理资源(我对WSO2非常陌生,所以我仍然很慢),并且当我通过SoapUI向它提交请求时,它记录的一切它应该到<send/>调解员,然后转储以下错误:WSO2 ESB 4.9 - 发送中介导致错误

ERROR - Failed to submit the response {org.apache.synapse.transport.passthru.PassThroughHttpSender} 
 
java.lang.NullPointerException 
 
\t at org.apache.synapse.transport.passthru.util.SourceResponseFactory.create(SourceResponseFactory.java:64) 
 
\t at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:462) 
 
\t at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:267) 
 
\t at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
 
\t at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:212) 
 
\t at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:444) 
 
\t at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:102) 
 
\t at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81) 
 
\t at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:277) 
 
\t at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:679) 
 
\t at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:244) 
 
\t at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529) 
 
\t at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172) 
 
\t at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
 
\t at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247) 
 
\t at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
 
\t at java.lang.Thread.run(Thread.java:745) 
 

 
[2015-12-10 13:11:00,508] ERROR - Access-Control-Allow-Credentials:true,Cache-Control:no-cache,Content-Type:application/json,Etag:W/"2-mZFLkyvTelC5g8XnyQrpOw",Expires:-1,Pragma:no-cache,Vary:Origin, X-HTTP-Method-Override,Via:1.1 vegur,X-Content-Type-Options:nosniff,X-Powered-By:Express,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><TYPE></TYPE><NODE></NODE><STATUS>200 [OK]</STATUS></jsonObject></soapenv:Body></soapenv:Envelope> Unexpected error sending message back {org.apache.synapse.core.axis2.Axis2Sender} 
 
org.apache.axis2.AxisFault: Failed to submit the response 
 
\t at org.apache.synapse.transport.passthru.PassThroughHttpSender.handleException(PassThroughHttpSender.java:610) 
 
\t at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:269) 
 
\t at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
 
\t at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:212) 
 
\t at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:444) 
 
\t at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:102) 
 
\t at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81) 
 
\t at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:277) 
 
\t at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:679) 
 
\t at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:244) 
 
\t at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529) 
 
\t at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172) 
 
\t at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
 
\t at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247) 
 
\t at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
 
\t at java.lang.Thread.run(Thread.java:745) 
 
Caused by: java.lang.NullPointerException 
 
\t at org.apache.synapse.transport.passthru.util.SourceResponseFactory.create(SourceResponseFactory.java:64) 
 
\t at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:462) 
 
\t at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:267) 
 
\t ... 16 more

的资源需要从了SoapUI一个JSON提交,像下面这样:

{"tests":[{"type":"DSS","node":"2"}]}

从该提交中,它绘制了系统的类型以测试(DSS)以及该系统上的哪个节点进行测试(2)。在这种情况下,它运行下面的DSS的顺序,以测试节点2,我们正在运行:

<sequence name="dss_node_2_seq" trace="disable" xmlns="http://ws.apache.org/ns/synapse"> 
 
    <log level="custom"> 
 
    <property name="[[ SQNC ]]" value="STARTING DSS2 SEQUENCE"/> 
 
    </log> 
 
    <call> 
 
    <endpoint key="dss_node_2"/> 
 
    </call> 
 
</sequence>

该序列显然然后调用dss_node_2端点这在目前点与一些模板有效的JSON一个typicode页:

<endpoint name="dss_node_2" xmlns="http://ws.apache.org/ns/synapse"> 
 
    <http method="post" trace="disable" uri-template="http://jsonplaceholder.typicode.com/posts/1"/> 
 
</endpoint>

我已将资源放入Kobra.io page,以便您可以看到它并进行必要的更改。目前我正在DSS上测试它,但有几种可能的类型,每种类型都有一组节点。


如果任何人都可以说明为什么它在我抛出这些错误和如何解决它,那会是很有益的,并大加赞赏,因为我一直停留在这几个小时现在它变得相当沮丧!

+0

这就是kobra页 –

回答

2

尝试使用发送调解员,而不是调用调解,这将等待整个流程完成,发送的信息可帮助您发送响应这样做立即。

<send> 
<endpoint key="dss_node_2"/> 
</send> 
0

尝试移动这部分之前发送中保(你的API中用于发送回调用者的响应)(它不能调用调解员之前定义):

<property name="messageType" scope="axis2" type="STRING" value="application/json"/> 
     <header action="remove" name="To" scope="default"/> 
     <property name="RESPONSE" scope="default" type="STRING" value="true"/> 
     <property action="remove" name="NO_ENTITY_BODY" scope="axis2"/> 
+0

没有运气我很害怕.. –

0

尝试使用反应介质, <响应/ >而不是<发送/ >

此外,验证有效负载以包含发送之前写入正确的头。你可以用<日志级别=“满”/>