1

我需要为 Web 服务生成 Java 客户端。我有两种选择,一种是使用 Apache CXFDynamicClientFactory类,另一种是使用 JAX-WS Dispatch API。

从 CXF 文档中,我了解到DynamicClientFactory该类将在运行时生成 Web 服务 SEI、数据类(使用 wsdl2Java 工具)。如果我想调用任何 Web 服务方法,我需要加载适当的数据类名称,并且需要使用反射设置参数,如下所示。

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("people.wsdl", classLoader);

Object person = Thread.currentThread().getContextClassLoader().loadClass("com.acme.Person").newInstance();

Method m = person.getClass().getMethod("setName", String.class);
m.invoke(person, "Joe Schmoe");

client.invoke("addPerson", person);

在上面的代码中,Person类是由 CXF 在运行时生成的,反射用于设置属性值。

我的问题是:如果我想设置 20 个参数值,那么我需要进行 20 次反射调用来做到这一点。这是一种有效的方法吗?或者有其他选择吗?还是使用 JAX-WS 的 Dispatch API 更好?请帮我。

4

0 回答 0