如何将从属性文件读取的属性读取到wsdl和生成的存根中



我想做的是将端点地址和服务版本的配置分离到.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代码生成插件来生成客户端存根。

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

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

首先,我创建了一个新的概要文件,并使用maven资源插件过滤来从.properties文件替换wsdl中的${param},并将替换的资源复制到目标文件夹。

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

就是这样:)

相关内容

  • 没有找到相关文章

最新更新