我有一个运行在Apache 2后面的Tomcat服务器(通过mod_proxy),在Tomcat中有一个服务于Spring生成的Web服务的WAR,它公开了这样的服务:
<wsdl:service name="EcoboxPortService">
<wsdl:port binding="tns:EcoboxPortSoap11" name="EcoboxPortSoap11">
<soap:address location="http://host:80/ecobox-ws/Ecobox"/>
</wsdl:port>
</wsdl:service>
问题是WSDL实际上是通过以下URL获得的:
https://host/ecobox-ws/ecobox.wsdl (Please note it uses HTTPS)
鉴于出现上述两个问题:
类似的问题,但并非完全有用:change the soap:address location in generated wsdl
相关依赖项:
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
相关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>
<load-on-startup>1</load-on-startup>
</servlet>
答案 0 :(得分:2)
看看here
您需要告诉MessageDispatherServlet转换位置:
<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>
或者如果您使用Java Config
如果你使用 AbstractAnnotationConfigMessageDispatcherServletInitializer,启用 转型就像重写一样简单 isTransformWsdlLocations()方法返回true。
答案 1 :(得分:1)
您可能需要检查Tomcat配置,您需要在其中设置&#34; proxyName&#34;和&#34; proxyPort&#34;。 JAX-WS自动生成应该从那里/ request-headers中获取它。 更多信息请访问:http://tomcat.apache.org/tomcat-6.0-doc/proxy-howto.html