【问题标题】:Apache CXF 2 Web Services - Custom Service LocationApache CXF 2 Web 服务 - 自定义服务位置
【发布时间】:2014-09-16 17:57:05
【问题描述】:

我有一个运行良好的网络服务。我正在尝试构建一个客户端来使用此服务。

我的一个限制是我的呼叫必须通过代理服务器进行记录(第三方托管服务提供商)。我的问题是我可以将代理指定为 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 位置和服务名称,但不能指定服务位置。

提前致谢。

阿尔

【问题讨论】:

    标签: cxf


    【解决方案1】:

    我已经设法找到了解决方案。

    我更改了绑定提供程序或端口上的 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 被导入并且在我们改变 End point 之后。 IT 工作是一种享受。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 2015-09-03
      • 2012-09-09
      • 1970-01-01
      相关资源
      最近更新 更多