[英]How can I change the autogenerated soap:address from a JAX-WS webservice WSDL deployed with Spring
我有一个使用来自WSDL的wsimport生成的webservice实现。 此服务部署在Spring Webapp中的Tomcat服务器中。 spring配置文件(只有webservice部分)是这样的
<wss:binding url="/fooService">
<wss:service>
<ws:service bean="#fooService">
</wss:service>
</wss:binding>
当我在tomcat中部署这个webapp时,如果我去的话,我可以获得WSDL
http://localhost:8080/foo/fooService?wsdl
和wsdl soap:address属性是这样的:
<service name="FooService">
<port name="FooService" binding="tns:FooServiceBinding">
<soap:address location="http://localhost:8080/foo/fooService"/>
</port>
</service>
而就目前而言,一切都好。
问题是在生产中,我们有一个Apache Web服务器,这个服务器将请求重定向到Tomcat。 它也有效,但是当我们获得WSDL时,soap:地址仍然是localhost:8080,我们需要将它作为webservice的公共URL。
有任何想法吗?
非常感谢你。
好吧,我找到了一个解决方案:
似乎JAX-WS会自动生成此属性。 我发现其他webservice框架实现,允许用户通过硬编码属性中的url来改变它,但似乎JAX-WS没有。 有人知道有没有办法?
无论如何,我找到了一个解决方法:在tomcat Connector配置中使用proxyName和proxyPort属性,您可以告诉Tomcat在代理(在我们的例子中是Apache服务器)后面,并且客户端的“真实”端口是80。
执行此更改时,自动生成的soap:地址包含正确的值。
参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.