Wso2 使用仅输入web服务时出错(仅从ESB输出)
我有一个带有一些纯输入操作的Web服务。在ESB中,我创建了一个代理,并将属性设置为“仅”,并将“强制”设置为“接受”。每次调用代理操作时,我都会在wso2carbon.log中收到以下错误消息:Wso2 使用仅输入web服务时出错(仅从ESB输出),wso2,wso2esb,Wso2,Wso2esb,我有一个带有一些纯输入操作的Web服务。在ESB中,我创建了一个代理,并将属性设置为“仅”,并将“强制”设置为“接受”。每次调用代理操作时,我都会在wso2carbon.log中收到以下错误消息: TID: [0] [ESB] [2015-04-02 09:52:45,307] ERROR {org.apache.axis2.transport.base.threads.NativeWorkerPool} - Uncaught exception {org.apache.axis2.trans
TID: [0] [ESB] [2015-04-02 09:52:45,307] ERROR {org.apache.axis2.transport.base.threads.NativeWorkerPool} - Uncaught exception {org.apache.axis2.transport.base.threads.NativeWorkerPool}
java.lang.UnsupportedOperationException: Not yet implemented
at org.apache.axis2.description.OutOnlyAxisOperation.getMessage(OutOnlyAxisOperation.java:124)
at org.wso2.carbon.core.multitenancy.MultitenantMessageReceiver.processResponse(MultitenantMessageReceiver.java:125)
at org.wso2.carbon.core.multitenancy.MultitenantMessageReceiver.receive(MultitenantMessageReceiver.java:81)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
尽管一切似乎都正常,但我对这条信息感到担忧。我做错了什么。这些输入只会在生产中被频繁调用,所以我希望它们不会出错
WSO2 ESB: 4.8.1
谢谢
Danny如果OUT\u ONLY=true并且您的后端将响应发送回esb,则会发生此异常。如果OUT\u ONLY设置为true,则您从后端收到响应,则它不是if OUT\u ONLY属性的有效场景。检查此帖子[1]
1.仅输出属性设置为通知此服务不返回响应。例如,如果您正在向消息代理发送消息。Force sc accepted标志导致ESB将HTTP accepted status响应发送回调用ESB的客户机,因为否则客户机将超时而不重新响应。因此,请确保您的后端服务不发送响应,并且ESB可以访问它。现在解决了这个问题:我的ESB在多租户模式下运行。代理服务是在租户中创建的。我做了一个新的安装,并把配置,所以没有租户。错误立即消失。当我删除配置并创建租户并将配置放入租户时,错误再次出现。所以这可能是一个bug。我可以尝试在租户中运行示例253 OneWayProxy进行验证。我可以在堆栈跟踪中看到processResponse:您确定您的Web服务不返回任何内容吗?尝试在esb和Web服务之间使用tcpmon:也许您不能从esb调用Web服务,因此您会收到来自防火墙或某种404的响应……好的。我读过这篇文章。但是,处理只有输入消息的soap调用的正确方法是什么?服务应该返回什么,以及如何在ESB中正确处理此问题。