【问题标题】:How to create a dynamic dispatch client using apache CXF如何使用 apache CXF 创建动态调度客户端
【发布时间】:2013-12-31 09:49:47
【问题描述】:

我想使用 apache CXF 来构建我的客户端。不幸的是,我没有看到允许我根据端口和操作名称动态调度客户端的方法。如果有一个巨大的 wsdl,JaxWsDynamicClientFactory 将为其中包含的所有服务创建类,这是我想避免的开销。

我在 JAX-WS 中找到了类似的实现。 CXF 中是否有任何 api 可以做同样的事情?

【问题讨论】:

  • JAX-WS 是 CXF 实现规范

标签: client cxf


【解决方案1】:

CXF 支持 JAX-WS Dispatch API,它是 SOAP 的低级接口。

这意味着您可以创建一个 Dispatch 来表示服务上的特定端口类型,然后通过构建消息来调用方法

// Set things up...
Service s = ...
Dispatch<DOMSource> dispatch =
        s.createDispatch(portName, // << a QName!
                DOMSource.class, Service.Mode.PAYLOAD);

// Construct the request message here
Node response = dispatch.invoke(new DOMSource(request)).getNode();
// Understand the response message here

当然,这意味着您必须使用 DOM 处理消息,这非常烦人。我认为这是真正值得的工具部分。

【讨论】:

  • 要将我的代码转化为有效的东西,您将需要大量特定于服务的参数,以便将正确的消息发送到正确的地址。我只是将 WSDL 工具化并不再担心它......
  • 确实,我们可以使用上面的代码,它完美地工作。但我想实现普通 JAX-WS 客户端不支持的高级功能,如 WS 安全性、SAML 等,而基于 JAX-WS 构建的 CFX 确实支持。或者我们是否有一种方法可以在 JAX-WS 中配置安全性,即;通过组合使用 CXF 和 JAX-WS?
猜你喜欢
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 2013-02-18
  • 2013-09-08
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 2014-12-12
相关资源
最近更新 更多