调用ESB代理操作的错误(未找到操作的EPR)

时间:2015-12-17 10:33:31

标签: web-services proxy wsdl wso2 wso2esb

我有一个WSO2 ESB(4.8.1)代理PA,它调用另一个ESB代理PB(具有已发布的WSDL)。当我从SoapUI调用PB代理中的SomeOperation操作时,它只是起作用:我得到了预期的响应,并且它根据WSDL模式进行了验证。

我需要从PA调用PB,因此我使用有效负载工厂构建相应的消息体,使用SomeOperation值设置Action头(因为操作在WSDL中定义),并使用带有相应端点的call mediator。我得到的是一个错误体,出现以下错误信息:

The endpoint reference (EPR) for the Operation not found is /services/SomeOperation and the WSA Action = urn:mediate. If this EPR was previously reachable, please contact the server administrator.

然而,如果我只是简单地编辑PA中定义的端点,那么我会在服务URL的末尾连接/ SomeOperation,那么它就能正常工作。

如果没有此解决方法,是否可以解决此问题?为什么会发生这种情况?我现在有一些类似错误的帖子建议设置Action标题,但我实际上是设置它。

编辑:根据Jean-Michel的第一个答案,它似乎已经解决了。

进一步的细节:我观察到PB wsdl中只有SOAP12绑定......无论如何,PB根据Action属性执行操作切换。

案例:PB(未修改),PA为soap11格式EP

有效!

案例:PB(未修改),PA为soap12格式EP

未找到Operation的端点引用(EPR)是/ services / PBService,WSA Action = null。

案例:PB(disableOperationValidation),PA与soap11格式EP

有效!

案例:PB(disableOperationValidation),PA为soap12格式EP

org.apache.axis2.AxisFault:传入消息的输入流为空。

我不能完全了解正在发生的事情,但我想我会尝试坚持使用肥皂1.1。

1 个答案:

答案 0 :(得分:2)

尝试在代理def(PB)中设置此参数:

<parameter name="disableOperationValidation" locked="false">true</parameter>

编辑端点并设置适当的格式(soap11或soap12)