我们有一个包含6个不同服务端点的Web服务,因此有6个不同的WSDL。我们正在为底层基础设施使用Spring集成。这个特定的项目将支持多个版本,这是正常工作。多版本化WSDL的最佳方法
据我了解,我可以服务器的WSDL的三种方式之一:
> - <static-wsdl>
> - <dynamic-wsdl>
> - custom servlet approach
前两种方法不能很好地扩展,我将不得不增加一组新的WSDL定义每个版本和自该ID指定WSDL位置,用户必须访问像service1_v1.wsdl,service1_v2.wsdl等。例如,这里是配置会是什么样静态的WSDL的两个版本:
<sws:static-wsdl id="service1_v1" location="/WEB-INF/wsdl/v1/service1.wsdl"/>
<sws:static-wsdl id="service2_v1" location="/WEB-INF/wsdl/v2/service2.wsdl"/>
...
<sws:static-wsdl id="service1_v2" location="/WEB-INF/wsdl/v2/service1.wsdl"/>
<sws:static-wsdl id="service2_v2" location="/WEB-INF/wsdl/v2/service2.wsdl"/>
...
<sws:static-wsdl id="service1_v3" location="/WEB-INF/wsdl/v3/service1.wsdl"/>
<sws:static-wsdl id="service2_v3" location="/WEB-INF/wsdl/v3/service2.wsdl"/>
最后一种方法会涉及一个处理任何w的servlet sdl请求,并使用请求参数确定版本。但是,我将无法利用任何内置弹簧功能,比如transformLocations。
是否有可能以编程方式生成WSDL?我可以添加一个maven任务来生成WSDL并在启动时添加spring bean。
我想避免的是有很多配置,并且每次添加新版本或弃用一个配置时都必须更新此配置。我已经在SI中有一个机制来将消息正确地路由到适当的版本化端点,只需要最终确定WSDL映射。
谢谢。对不起,我不是很清楚。我想通过某种构建以编程方式生成WSDL,在发布到生产之前将它们检入一次,然后在代码中创建static-wsdl bean。目的是为了最大限度地减少我们为映射WSDL而必须执行的大量配置。我们目前正在使用dynamic-wsdl,但由于涉及风险,这仅用于开发目的。在这一天结束时,我不想为新版本更新我们配置的多个部分,每次添加wsdl声明都会使问题复杂化。 –