Apache CXF 2 Web服务 - 自定义服务位置

时间:2014-09-16 07:55:35

标签: cxf

我有一个工作正常的网络服务。我正在尝试建立一个客户端来使用这项服务。

我遇到的一个限制是我的电话必须通过代理服务器进行记录(第三方托管服务提供商)。我的问题是我可以将代理指定为WSDL位置,并且工作正常。返回的结果WSDL指定原始服务地址:

我在代理处配置了我的WSDL位置:

http://[proxy ip address]/csp/sql/ws.Booking.BookingService2.cls?wsdl=1

WSDL显示:

    <service name="Booking">
    <port name="BookingSoap" binding="s0:BookingSoap">
    <soap:address      location="https://alpha2.premier.com:443/
        csp/sql/ws.Booking.BookingService2.cls"/>
    </port>
    </service>

我想使用代理地址(192.168.98.45)来调用此服务。

有谁知道如何调用自定义服务位置?在生成的CXF代码中,我可以指定WSDL位置和服务名称,但不能指定服务位置。

提前致谢。

的Al

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方法。

我更改了绑定提供程序或端口上的ENDPOINT_ADDRESS_PROPERTY。这是我的代码,用于实例化由CXF生成的Web服务:

com.micro.bartws.booking.Booking ss = new com.micro.bartws.booking.Booking(wsdl);
BookingSoap port = ss.getBookingSoap(); /* Set NEW Endpoint Location */ String endpointURL = hubProperties.getProperty("intouchservicelocation"); BindingProvider bp = (BindingProvider)port; bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);

因此导入了WSDL,并且我们更改了终点。这是一种享受。

由于