是否可以在JAX-WS WSDL中配置位置(schemaLocation和soap:地址位置)?
当我部署下面的示例时,’servername’将是localhost,’serverport’将是Web应用程序的本地端口号.
当我部署下面的示例时,’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)如果您使用相同的协议,则应该修复您的URL.如果您的代理在https和http之间切换,您可能仍会遇到问题.