我使用的是spring-ws,我在web.xml中有以下配置
<servlet>
<servlet-name>spring-ws</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>**transformWsdlLocations**</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring-ws</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我已配置 transformWsdlLocations 。请在这里解释一下transformWsdlLocations的用法。我正在使用动态WSDL生成概念。
transformWsdlLocations是否真的需要动态WSDL生成?
谢谢!
答案 0 :(得分:4)
鉴于删除该值并重新部署您的应用程序只需要几分钟,我建议您这样做,看看会发生什么。只是尝试通过“localhost”和“127.0.0.1”访问WSDL,看看有什么不同。
但是我会解释你应该在这里看到什么......
当您阅读生成的WSDL时,您应该发现其中有URL。
即。您可以使用本地计算机:
http://localhost:8080/myservice.wsdl
但是当你上线时,你的服务可能是:
http://www.<yourdomain>.com/myservice.wsdl
您不希望从您的生产域下载WSDL的人员使用“localhost:8080”填充这些值。同样,如果WSDL中返回的URL是针对您的生产服务器的,则无法正确测试您的服务。或者您可能有多个具有不同URL的生产服务。
transformWsdlLocations可确保根据用于访问服务的任何URL动态生成此内容。
动态WSDL生成不需要它,但我总是发现它非常有用。但是,默认情况下不启用它,因此如果您确实希望动态生成这些URL,则最好包含它。