我有一個Tomcat服務器在Apache 2後面運行(通過mod_proxy),在Tomcat中有一個服務於Spring的Web服務的WAR服務,這一個:Spring生成的WSDL暴露了錯誤的協議(HTTP vs HTTPS)端點位置
<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)
鑑於上述2個問題出現:
- 爲什麼WSDL將'80'端口添加到端點位置?它可以被覆蓋嗎?
- 爲什麼會得到'http'協議,儘管實際的URL請求是通過'https'? Spring不會翻譯'X-forwarded-for'頭文件嗎?
類似的問題,但完全沒有任何幫助: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>
是你的服務器(tomcat和或Apache)啓用HTTP服務資源?在我看來,更像tomcat的東西。您的Web應用程序能夠在HTTP中爲資源提供服務嗎? –
@AngeloImmediata是的,實際上Tomcat只配置爲HTTP,但Apache配置爲 – gvasquez
當您嘗試通過輸入URL http://來顯示WSDL時,您是否檢查過您是否在https中重定向?如果是這樣的話......這與Apache配置有關。你可以做的另一項檢查是直接訪問WSDL(可能是服務器上的wget) –