1

我想要做的是将端点地址的配置和服务版本分离到 .properties 文件或任何文件中。因为,端点在各种环境中会有所不同,例如 UAT 和 PRODUCTION 环境。此外,服务提供者通过使用 ABCDEF_10_4 等命名约定来控制服务/消息版本,ABCDEF 是服务的名称,10.4 是发布版本。我们只是一个服务消费者,所以我们不能在服务器端改变任何东西。

我正在寻找的是使用类似于此的东西的方法

<wsdl:operation name="service1">
    <soap:operation soapAction="**${endpointurl}/${msgname}**" />
    <wsdl:input>
        <soap:body use="literal" />
        <soap:header use="literal" message="tns:MessageHeader" part="session" />
    </wsdl:input>
    <wsdl:output>
        <soap:body use="literal" />
        <soap:header use="literal" message="tns:MessageHeader" part="session" />
     </wsdl:output>
</wsdl:operation>

<wsdl:service name="**${servicename}**">
    <wsdl:port binding="tns:ServiceBinding" name="ServicePort">
        <soap:address location="**${endpointurl}**" />
    </wsdl:port>
</wsdl:service>

我可以在名称中指定这些值:类似于 .properties 文件的值对

endpointurl=http://xxx.xxx.xxx.xxx:10000
msgname=ABCDEF_10_4
servicename=myService

问题是我不想每次服务提供商发布他们的服务的新版本时都更改 wsdl,而且我和我的团队在一个地方管理服务版本会更容易。

另外,当我们在 UAT/DEV/PROD/TEST 环境中部署我们的应用程序时,我们不需要每次都在 wsdl 中进行任何更改,或者每个环境都有很多 wsdl 文件。

我们正在使用 maven cxf codegen 插件来生成客户端存根。

有什么想法或可能的方法来做类似的事情吗?

4

1 回答 1

0

好的,在谷歌搜索 3-4 小时后,我找到了答案,并认为我应该为社区做出贡献。

首先,我创建一个新配置文件并使用 maven-resources-plugin 过滤从 .properties 文件中替换 wsdl 中的 ${param} 并将替换的资源复制到目标文件夹。

然后,在该配置文件中,我使用 cxf-codegen-plugin 从生成的 wsdl 生成 Web 服务客户端。

而已 :)

于 2013-08-09T02:55:00.793 回答