Web サービス用の Java クライアントを生成する必要があります。1 つは Apache CXFDynamicClientFactory
クラスを使用する方法で、もう 1 つは 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 を使用する方がよいでしょうか? 私を助けてください。