これ以降はありません。使用可能な操作を取得するために、ユーザーによって知らさWSDLを解析
動的クライアントのためのDispatch
オブジェクト(それは、などのWebサービスエンドポイント、ポート名を、知らせることによってその場で作成することができます)ビルドします。例では(要求メッセージを構築し
package com.mycompany.demo;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class Client {
public static void main(String args[]) {
QName serviceName = new QName("http://org.apache.cxf", "stockQuoteReporter");
Service s = Service.create(serviceName);
QName portName = new QName("http://org.apache.cxf", "stockQuoteReporterPort");
Dispatch<DOMSource> dispatch = s.createDispatch(portName,
DOMSource.class,
Service.Mode.PAYLOAD);
...
}
}
を我々は)DOMSourceを使用しているの下:
// Creating a DOMSource Object for the request
DocumentBuilder db = DocumentBuilderFactory.newDocumentBuilder();
Document requestDoc = db.newDocument();
Element root = requestDoc.createElementNS("http://org.apache.cxf/stockExample", "getStockPrice");
root.setNodeValue("DOW");
DOMSource request = new DOMSource(requestDoc);
は、Webサービスを呼び出す
の
// Dispatch disp created previously
DOMSource response = dispatch.invoke(request);
推奨事項:
- 使用
((BindingProvider)dispatch).getRequestContext().put("thread.local.request.context", "true");
あなたはDispatchオブジェクトのスレッドセーフにしたい場合。
- 場合によっては、
Dispatch
オブジェクトを後で使用するためにキャッシュします。オブジェクトを構築するプロセスは無料ではありません。
その他の方法
CXF dynamic-clients APIを使用してのように、ダイナミッククライアントを作成するための他の方法があります。価値が自分自身は、私がいることを試していない
CXFは にアプリケーションを許可するためにいくつかの選択肢をサポートしていますがSEIとデータクラスなしでサービスと通信はずですが:あなたは、プロジェクトのインデックスページを読み込むことができます試してみてください。