URLが異なる2つのバージョンのWebサービスを公開するときに同じ問題が発生しました。
old version within http://hostname/ws.wsdl
new version within http://hostname/version/ws.wsdl
私のソリューションは、汎用のorg.springframework.ws.transport.http.MessageDispatcherServletservletではなく、デフォルトのorg.springframework.web.servlet.DispatcherServletを使用し、Bean構成でさまざまなwsdlバージョンへのURLマッピングを構成していました。
このソリューションは、スプリングクラスをサブクラス化せずに機能するため、私はこのソリューションを好みます。
web.xml:
<servlet>
<servlet-name>webservice</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>webservice</servlet-name>
<url-pattern>/ws</url-pattern>
<url-pattern>/ws.wsdl</url-pattern>
<url-pattern>/version/ws</url-pattern>
<url-pattern>/version/ws.wsdl</url-pattern>
</servlet-mapping>
Beans.xml
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
<bean
class="org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter">
<property name="messageFactory" ref="messageFactory" />
</bean>
<bean id="messageDispatcher"
class="org.springframework.ws.soap.server.SoapMessageDispatcher" />
<bean
class="org.springframework.ws.transport.http.WsdlDefinitionHandlerAdapter" />
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/ws.wsdl">ws</prop>
<prop key="/version/ws.wsdl">ws-newversion</prop>
</props>
</property>
<property name="defaultHandler" ref="messageDispatcher" />
</bean>
<bean id="ws"
class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition">
<constructor-arg value="classpath:wsdl/oldversion/Service.wsdl" />
</bean>
<bean id="ws-newversion"
class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition">
<constructor-arg value="classpath:wsdl/newversion/CarService.wsdl" />
</bean>
したがって、各wsdlは、SimpleUrlHandlerMapping-Beanで構成された特定のパスで公開されます。