Java 如何使JAX-WS对soap使用https:address/schemaLocation
我正在使用Scala+JAX-WS构建一个简单的SOAP服务器,但在WSDL中自动生成的位置方面遇到了问题。服务发布方式如下:Java 如何使JAX-WS对soap使用https:address/schemaLocation,java,scala,wsdl,jax-ws,haproxy,Java,Scala,Wsdl,Jax Ws,Haproxy,我正在使用Scala+JAX-WS构建一个简单的SOAP服务器,但在WSDL中自动生成的位置方面遇到了问题。服务发布方式如下: val endpoint = Endpoint(new MySoapServer()) endpoint.publish("http://10.2.2.100") 它在WSDL中创建以下元素 <service name="MyService"> <port name="MyPort" binding="tns:MyPortBinding">
val endpoint = Endpoint(new MySoapServer())
endpoint.publish("http://10.2.2.100")
它在WSDL中创建以下元素
<service name="MyService">
<port name="MyPort" binding="tns:MyPortBinding">
<soap:address location="http://10.2.2.100"/>
</port>
</service>
及
但是,服务器位于只接受https请求的代理之后,因此这些URL是无用的
如何修改schemaLocation和soap:address位置元素,以便它们读取https://10.2.2.100?
正如建议的那样,我已经尝试使用X-Forwarded-Proto,但仍然没有成功…也许我在这里遗漏了一些东西:您不能只更改已发布端点中的地址字符串来创建所需的地址吗?或者生成一个wsdl,手工更正地址,然后在MySoapServer中引用该wsdl,或者将修改后的wsdl提供给您的客户I无法更改字符串;端点仅处理http协议。第二个建议是可行的,但我最终不得不维护一个SOAP服务,它既是对象,又是契约。目前,我认为最好的办法是咬紧牙关,使用手工编写的wsdl、scalaxb和spray,转向契约优先服务。。。
<xsd:schema>
<xsd:import schemaLocation="http://10.2.2.100/?xsd=1"/>
</xsd:schema>