Spring integration 多版本wsdl的最佳方法

Spring integration 多版本wsdl的最佳方法,spring-integration,Spring Integration,我们有一个web服务,它包含6个不同的服务端点,因此包含6个不同的WSDL。我们正在对底层基础设施使用spring集成。此特定项目将支持多个正确运行的版本 据我所知,我可以通过以下三种方式之一为WSDL提供服务器: > - <static-wsdl> > - <dynamic-wsdl> > - custom servlet approach 前两种方法不能很好地扩展,我必须为每个版本添加一组新的WSDL定义,并且由于id指定了WSDL位置,用户必须访

我们有一个web服务,它包含6个不同的服务端点,因此包含6个不同的WSDL。我们正在对底层基础设施使用spring集成。此特定项目将支持多个正确运行的版本

据我所知,我可以通过以下三种方式之一为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"/>
最后一种方法将涉及处理任何wsdl请求的servlet,并使用请求参数确定版本。然而,我将无法利用任何内置的spring功能,比如transformLocations

是否可以通过编程方式生成WSDL?我可以添加一个maven任务来生成wsdl,并在启动时添加springbean


我试图避免的是有很多配置,并且每次添加新版本或弃用新版本时都必须更新此配置。我在SI中已经有了一种机制,可以将消息正确地路由到相应的版本化端点,只需要完成WSDL映射。

您应该能够以编程方式完成这项工作,使用MessageDispatcherServlet使用的类,如所示


但是,请注意关于动态创建wsdl的注意事项。

谢谢。对不起,我不太清楚。我希望通过某种构建以编程方式生成wsdl,在发布到生产环境之前检查它们一次,然后在代码中创建静态wsdl bean。其目的是尽量减少映射WSDL所需的大量配置。我们目前正在使用动态wsdl,但是由于涉及的风险,这仅用于开发目的。最后,我不想为新版本更新配置的多个部分,每次添加wsdl声明都会使问题复杂化。