如何使用apache CXF创建动态调度客户端

时间:2013-12-31 09:49:48

标签: client cxf

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

我在JAX-WS中找到了类似的实现。在CXF中是否有任何api也会这样做?

1 个答案:

答案 0 :(得分:0)

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来处理消息,这非常烦人。我认为这是工具的一部分真的值得。