3

我正在使用 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 生成概念。

动态 WSDL 生成真的需要 transformWsdlLocations 吗?

谢谢!

4

1 回答 1

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,那么最好包含它。

于 2013-11-07T14:59:42.763 回答