我們在JBoss EAP 6.4.0(JBoss AS 7.5.0)的WAR中部署了一個JAX-WS webservice,它提供了預定義的WSDL和XSD:如何防止JBoss將JAX-WS XSD導入URL重寫爲HTTP
@WebService(endpointInterface = "package.MyPortType",
targetNamespace = "http://target.name.space",
wsdlLocation = "/WEB-INF/classes/myService.wsdl",
serviceName = "myService",
portName = "myServicePort")
public class MyService implements MyPortType {
...
}
JBoss的正確部署Web服務併發布給定的WSDL爲 http://localhost:8080/myApp/myService 和 http://localhost:8080/myApp/myService?wsdl
我們遇到在於WSDL中的XSD進口的問題。在最初的WSDL,它看起來像:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" ...>
<types>
<xsd:schema targetNamespace="http://target.name.space">
<xsd:import namespace="http://target.name.space"
schemaLocation="mySchema.xsd" />
但JBoss的重寫這
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" ...>
<types>
<xsd:schema targetNamespace="http://target.name.space">
<xsd:import namespace="http://target.name.space"
schemaLocation="https://localhost:8443/myApp/myService?xsd=mySchema.xsd" />
這不起作用,因爲我們既沒有HTTPS的連接器也HTTPS入standalone.xml
插座綁定定義。所以JBoss運行時沒有任何HTTPs連接。 我們沒有任何關於Web服務部署的其他配置文件。
爲什麼進口改寫成這樣一種錯誤的方式,我們如何防止這種情況發生?