【问题标题】:WSO2 ESB alters the wsdlWSO2 ESB 改变了 wsdl
【发布时间】:2013-02-21 05:11:21
【问题描述】:

我有一个后端服务,我在 WSO2 ESB 中将其配置为代理服务。

ESB 公开的 wsdl 略有不同,这也是有效的并且按预期工作。

问题是我不能将旧存根与 ESB wsdl 一起使用,因为结构发生了变化。我想以这样一种方式创建服务,即来自 ESB 的 wsdl 与我的端点服务完全相同。

这种方法是否可行,或者我是否需要再次生成存根(在我的情况下这需要付出很多努力)?

编辑:endpoint 和 esb wsdl 之间 WSDL 的区别 1.例如我的端点有以下标签

<xs:element name=", - Endpoint
<xsd:element name=  - ESB

2。另一个区别是:

<wsdl:service name="CasesServiceService"> - Endpoint
<wsdl:service name="CasesService"> - ESB

3。端口名称:

<wsdl:port name="CasesServiceHttpSoap11Endpoint" binding="tns:CasesServiceSoap11Binding">
<wsdl:port binding="tns:CasesServiceServiceSoapBinding" name="CasesServicePort">

【问题讨论】:

  • 存根是从客户端使用的。清楚地明白你的意思是“我想以这样一种方式创建服务,即来自 ESB 的 wsdl 与我的端点服务完全相同。”。如果您的 wsdl 已更改,那么您需要重新生成存根。
  • 感谢您的回答!我想我没有很好地解释它,请参阅编辑过的原始帖子。问题是我不想再次生成存根(因为这将非常耗时),我只想更改存根中的端点 URL,以便它们继续运行。
  • 我认为您不能使用相同的存根来调用代理。将 wsdl 添加到代理的目的是什么?通常,如果我们不想暴露后端服务的某些操作,我们将编辑 wsdl 并将 wsdl 附加到代理,并使用唯一允许的操作。在您的情况下,我认为没有正当理由将 wsdl 附加到您的代理而不是简单的名称更改。:) 只需将其删除。
  • AFAIK 唯一可以使用旧存根的情况是,如果您更改了方法实现并且没有更改任何操作名称或参数,则您不需要重新生成存根。

标签: wso2 esb


【解决方案1】:

为了使 WSO2 ESB 使用完全相同的服务/端口名称保持相同的 WSDL 合同,您可以直接为您的代理服务编辑 Apache Synapse 配置文件。只需点击WSO2 ESB界面中的“Source View”,在&lt;proxy&gt;节点添加如下参数即可:

<parameter name="useOriginalwsdl">true</parameter>
<parameter name="modifyUserWSDLPortAddress">true</parameter>

这将使它使用原始的 WSDL 并仅修改端口地址使其指向总线。

relevant documentation is here

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多