CXF总是以WSDL首次打开的URL返回url

时间:2018-11-29 09:17:25

标签: spring spring-boot soap wsdl cxf

我用SOAP创建了CXF端点:

@Bean
Endpoint endpoint() {
    EndpointImpl endpoint = new EndpointImpl(bus, myEndpoint);
    endpoint.publish(path);
    return endpoint;
}

当我在浏览器中打开网址时,例如:http://localhost:6666/app/ws?wsdl 我在返回的wsdl中有以下URL:<soap:address location="http://localhost:6666/app/ws"/>

但是当我使用外部URL打开时:http://172.16.105.134:6666/app/ws?wsdl 没关系,我在返回的wsdl中有以下URL:<soap:address location="http://localhost:6666/app/ws"/>

通常,我总是会得到首次打开的网址。

但是我的任务始终是返回请求它的网址。我该怎么办?

1 个答案:

答案 0 :(得分:0)

WSDL由org.apache.cxf.wsdl11.WSDLManagerImpl缓存。您可以提供自己的org.apache.cxf.wsdl.WSDLManager实现,也可以使用publishedEndpointUrl属性对其进行更新(请参见https://github.com/apache/cxf/blob/master/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java#L347)。