WSDL绑定URL在SSL终止后将协议更改为HTTP

时间:2018-08-29 13:23:23

标签: soap wsdl cxf jax-ws embedded-jetty

我们有一个简单的jax-ws SOAP服务器,该服务器由Apache CXF 3.2.6以独立(自托管)模式支持,使用嵌入式Jetty。服务器是使用CXF的wsdl2java首先以wsdl生成的。 WSDL是类路径上的文件,并且该物理WSDL文件在https://....元素的location属性中具有soapbind:address

启动后,服务器将发布到http://0.0.0.0:8080。服务器还位于路由https://external-name-> SSL终结点-> http://internal-name:8080的SSL终结点后面,因此在外部https://external-name上可以使用该服务及其WSDL。

问题在于,当通过https://external-name?wsdl从部署的服务器请求WSDL时,CXF将结果文件中location元素的soapbind:address属性更改为http://external-name (将协议从HTTPS更改为HTTP并保留其他所有内容),这会导致生成客户端代理,Soap UI等问题。

最糟糕的是,合作伙伴的SOA无法强制使用WSDL中发布的位置,因此无法使用我们的服务。

如果不删除SSL终止并让CXF自己处理SSL,我们如何解决呢? (由于Java密钥库维护的噩梦,不得不将公司范围的证书+私钥存储在服务器实例中,所以这很可怕。

1 个答案:

答案 0 :(得分:2)

您可以在配置中将所需地址设置为publishedEndpointUrl。参见:http://cxf.apache.org/docs/jax-ws-configuration.html