【发布时间】: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 唯一可以使用旧存根的情况是,如果您更改了方法实现并且没有更改任何操作名称或参数,则您不需要重新生成存根。