[英]Change schemaLocation and soap:address location in runtime generated WSDL with JAX-WS
Is it possible to configure the location ( schemaLocation
and soap:address
location
) in a JAX-WS WSDL? 是否可以在JAX-WS WSDL中配置位置(
schemaLocation
和soap:address
location
)?
When I deploy the sample below, 'servername' would be localhost and 'serverport' would be the local port number for the web application. 当我部署下面的示例时,'servername'将是localhost,'serverport'将是Web应用程序的本地端口号。
However, I want to reconfigure these to be a proxy servername and serverport which redirects to the service. 但是,我想将这些重新配置为代理服务器名称和重定向到服务的服务器端口。 Is this possible and how would I achieve it?
这是可能的,我将如何实现它?
The deployment environment is Tomcat and Apache. 部署环境是Tomcat和Apache。
I have the following service class: 我有以下服务类:
@WebService
public class AuthenticationService {
....
public AuthenticationService(){}
@WebMethod
public AuthenticationResult checkAuthentication(
@WebParam(name = "authentication") Authentication authentication,
@WebParam(name = "privilege") Privilege privilege) {
....
}
}
When ran, the WSDL looks like this: 运行时,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>
Any help would be greatly appreciated. 任何帮助将不胜感激。
If you keep the original hostname in your request (eg use ProxyPreserveHost On
if you use mod_proxy
) this should fix your URLs, if you use the same protocol. 如果您在请求中保留原始主机名 (例如,如果使用
mod_proxy
则使用ProxyPreserveHost On
),如果您使用相同的协议,则应修复您的URL。 You may still have problems if your proxy switches between https and http . 如果您的代理在https和http之间切换,您可能仍会遇到问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.