在 WSO2 ESB 4.6 中访问已发布的 WS 代理时出错:未找到 EPR [英] Error accesing published WS proxy in WSO2 ESB 4.6: EPR not found

查看:29
本文介绍了在 WSO2 ESB 4.6 中访问已发布的 WS 代理时出错:未找到 EPR的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 4.5.1 和 4.6 中部署了完全相同的 WS-proxy.使用 4.5.1 它可以正常工作,但使用 4.6 我得到:

I deployed exactly the same WS-proxy in 4.5.1 and 4.6. With 4.5.1 it works correctly, but with 4.6 I get:

ERROR - AxisEngine The endpoint reference (EPR) for the Operation not found is /services/registro.registroHttpSoap11Endpoint and the WSA Action = . If this EPR was previously reachable, please contact the server administrator.

来源如下:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="registro" transports="http" statistics="disable" trace="disable" startOnLoad="true">
  <target>
    <outSequence>
      <send/>
    </outSequence>
    <endpoint>
      <address uri="http://localhost:15080/SIGEM_RegistroPresencialWS/services/ServicioRegistroWebService"/>
    </endpoint>
   </target>
   <publishWSDL uri="http://localhost:15080/SIGEM_RegistroPresencialWS/services/ServicioRegistroWebService?wsdl"/>
   <description></description>
</proxy>

我需要为 4.6 做什么.让它发挥作用?

What do I have to do for 4.6. to make it work?

谢谢.

推荐答案

为了增强 ESB 性能,从 ESB 4.6.0 版本开始默认启用直通传输,而 ESB 4.5.1 并非如此.您的代理服务似乎依赖于基于 SOAP 主体的调度,但传递传输不支持基于 SOAP 主体的调度.基于 SOAP 正文的调度构建消息正文并使用第一个元素的本地名称进行调度,这对代理性能的影响很严重,这就是传递传输不支持它的原因.我们正在为未来的 ESB 版本修复此限制,同时不会失去直通传输的任何优势.

To enhance ESB performance pass-through transport has been enabled by default starting from ESB 4.6.0 version that is not the case for ESB 4.5.1. It seems your proxy service depends on SOAP body based dispatching but pass-through transport does not support for SOAP body based dispatching. SOAP body based dispatching build the message body and use first element's local name for dispatching which effect to proxy performance badly that is the reason it was not supported in pass-through transport. We are in a process to fix this limitation for future ESB releasees without loosing any advantage of pass-through transport.

顺便说一句,目前您可以使用以下解决方法之一.

BTW for the moment you can use one of the following workarounds.

  1. 向代理服务发送消息时,将操作名称附加到端点 URL

  1. When sending a messages to the proxy service append operation name to the endpoint URL

例如 - http://serverName/app/serviceName/operationName

修改客户端级代码以发送预期的 SOAPAction 值(如 Try-It 案例)

Modify client level code to send expected SOAPAction value ( like Try-It case)

我不确定您的后端服务的 WSDL 是否定义了"作为 SOAPAction 的值,如果是这种情况,您可以修改后端服务以具有"以外的值.每个操作.作为 JAX-WS 服务的示例,您可以为此使用 @WebMethod 注释.

I'm not sure your backend service's WSDL defined "" as the value of SOAPAction if that is the case you may modified the backend service to have value other than "" per each operation. AS an example for JAX-WS services you can use @WebMethod annotation for this.

例如 - @WebMethod(action="XXXX")

e.g - @WebMethod(action="XXXX")

注意:如果您的后端 WSDL 定义的值不是"为 SOAPAction 而您的客户端发送带有 SOAPAction="" 的消息那么就是客户违反了服务合同,需要在客户层面进行修复.

Note : In case if your backend WSDL defining a value other than "" for SOAPAction while your client send message with SOAPAction="" then it's a violation of service contract by the client and need to be fixed on client level.

这篇关于在 WSO2 ESB 4.6 中访问已发布的 WS 代理时出错:未找到 EPR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆