生成されるスタブの内容,およびスタブを使用してSOAPサービスを呼び出す場合の実装について説明します。
WSDL2Javaコマンドで生成するファイルのうち,クライアントでは次に示すファイル(スタブ)を使用します。
表3-23 クライアントで利用するファイル(スタブ)
ファイル名 | 内容 |
---|---|
<サービス名>Locator.java | サービスクラスです。SOAPサービスへの接続情報を保持しています。 |
<ポートタイプ名>.java | リモートインタフェースです。SOAPサービスで利用できるメソッドを定義しています。 |
<データ型名>.java | ユーザ定義のデータ型クラスです。メソッドのパラメタや,パラメタのクラスで参照されるデータ型を定義しています。必要に応じて使用します。 |
サービス名はWSDLのwsdl:service要素のname属性の値が設定されます。ポートタイプ名はWSDLのwsdl:portType要素のname属性の値が設定されます。また,データ型名はユーザ定義のデータ型の名前に応じて設定されます。
表3-24 サービスクラスのメソッド
メソッド名 | 機能説明 |
---|---|
get<ポート名>Address | SOAPサービスへの接続先情報を返します。 戻り値:java.lang.String |
get<ポート名> | リモートインタフェースへのオブジェクトポインタを返します。 戻り値:リモートインタフェースへのオブジェクトポインタ |
get<ポート名>(java.net.URL portAddress) | 指定されたSOAPサービスへの接続先情報を使用して,リモートインタフェースへのオブジェクトポインタを返します。 戻り値:リモートインタフェースへのオブジェクトポインタ |
スタブを使用してSOAPサービスを呼び出す処理を実装します。次の例では,サービスクラスの例をUserInfoServiceLocator.java,リモートインタフェースの例をUserInfo.javaとしています。
(例)
ClientID cltID = Management.initializeClient();
(例)
Management.connectClientIDtoCurrentThread(cltID);
(例)
UserInfoServiceLocator uis = new UserInfoServiceLocator();
(例)
UserInfo ui = uis.getUserInfo();
(例)
String url = uis.getUserInfoAddress();
(例)
java.net.URL endpoint = new java.net.URL("http://hostname:8080/WebApp1/services/UserInfo");
UserInfo ui = uis.getUserInfo(endpoint);
(例)
String name = ui.getName();
実装例の全体は,「4.1.8 クライアント側の処理を実装する」を参照してください。
なお,DeployScopeが「Session」となっているSOAPサービスを呼び出すクライアントプログラムを実装する場合,SOAPサービスのJavaインタフェースのインスタンスは,JSPやサーブレットが呼び出されるたびに,ローカル変数に生成してください。初期化や呼び出し時に,インスタンスを生成後,それをメンバ変数に退避して,複数のスレッドで共有すると,DeployScopeの「Session」が有効にならない場合があります。なお,DeployScopeが「Session」の場合は,クライアントプログラムからの呼び出し単位で,セッションが切り替わります。
このセッションは,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」で記述している「J2EEサーバ間のセッション情報の引き継ぎ」には対応していません。