是否可以在 JAX-WS WSDL 中配置位置(schemaLocation
和 soap:address
location
)?
当我部署下面的示例时,“servername”将是 localhost,“serverport”将是 Web 应用程序的本地端口号。
但是,我想将它们重新配置为重定向到服务的代理服务器名称和服务器端口。这可能吗?我将如何实现?
部署环境为Tomcat和Apache。
我有以下服务类:
@WebService
public class AuthenticationService {
....
public AuthenticationService(){}
@WebMethod
public AuthenticationResult checkAuthentication(
@WebParam(name = "authentication") Authentication authentication,
@WebParam(name = "privilege") Privilege privilege) {
....
}
}
运行时,WSDL 如下所示:
<definitions targetNamespace="http://authentication.service.ws.ijs/" name="AuthenticationServiceService">
<types>
<xsd:schema>
<xsd:import namespace="http://authentication.service.ws.ijs/" schemaLocation="http://servername:serverport/WebAppName/AuthenticationService?xsd=1"/>
</xsd:schema>
</types>
<message name="checkAuthentication">
<part name="parameters" element="tns:checkAuthentication"/>
</message>
<message name="checkAuthenticationResponse">
<part name="parameters" element="tns:checkAuthenticationResponse"/>
</message>
<portType name="AuthenticationService">
<operation name="checkAuthentication">
<input wsam:Action="http://authentication.service.ws.ijs/AuthenticationService/checkAuthenticationRequest" message="tns:checkAuthentication"/>
<output wsam:Action="http://authentication.service.ws.ijs/AuthenticationService/checkAuthenticationResponse" message="tns:checkAuthenticationResponse"/>
</operation>
</portType>
<binding name="AuthenticationServicePortBinding" type="tns:AuthenticationService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="checkAuthentication">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="AuthenticationServiceService">
<port name="AuthenticationServicePort" binding="tns:AuthenticationServicePortBinding">
<soap:address location="http://servername:serverport/WebAppName/AuthenticationService"/>
</port>
</service>
</definitions>
如有任何帮助,我们将不胜感激。
最佳答案
如果您在请求中保留原始主机名(例如,如果您使用mod_proxy
,请使用ProxyPreserveHost On
)这应该会修复您的网址,如果你使用相同的协议(protocol)。如果您的代理在 https 和 http 之间切换,您可能仍然会遇到问题。
关于java - 更改 schemaLocation 和 soap :address location in runtime generated WSDL with JAX-WS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004067/