10.2.4 オブジェクトを生成する

同期受付(Webサービス)のメソッドを呼び出すために,生成したスタブを使用して,オブジェクトを生成します。

<この項の構成>
(1) 使用するスタブ
(2) オブジェクトの生成手順

(1) 使用するスタブ

次の二つのスタブを使用して,オブジェクトを生成します。

CSCMsgSyncServiceDeliveryWSImplServiceLocator.javaクラス
このクラスは,サービス部品への接続先(endpoint)情報の参照および設定をします。このクラスでは次のメソッドを提供します。

表10-2 CSCMsgSyncServiceDeliveryWSImplServiceLocator.javaクラスのメソッド

メソッド名機能説明
getCSCMsgSyncServiceDeliveryWSImplAddress()サービス部品への接続先情報を返します。
戻り値:
java.lang.String
getCSCMsgSyncServiceDeliveryWSImpl()サービスクラスへのインターフェースクラスのオブジェクトポインタを返します。
戻り値:
インターフェースクラスオブジェクト(CSCMsgSyncServiceDeliveryWSImplオブジェクト)
getCSCMsgSyncServiceDeliveryWSImpl(java.net.URL portAddress)設定されたサービス部品への接続先情報を使用して,サービスクラスへのオブジェクトポインタを返します。
戻り値:
インターフェースクラスオブジェクト(CSCMsgSyncServiceDeliveryWSImplオブジェクト)
CSCMsgSyncServiceDeliveryWSImpl.javaクラス
サービスクラスとして利用できるメソッドの一覧が記述されています。このクラスを使用してSOAPサービスを利用します。

(2) オブジェクトの生成手順

同期受付(Webサービス)のメソッドを呼び出すためのオブジェクトを生成する手順を次に示します。

  1. サービス部品のインターフェースクラスであるCSCMsgSyncServiceDeliveryWSImplServiceLocatorクラスのオブジェクトを生成します。
    (例)

    CSCMsgSyncServiceDeliveryWSImplServiceLocator locator
                = new CSCMsgSyncServiceDeliveryWSImplServiceLocator();

  2. サービス部品のインターフェースクラスのオブジェクトを使用して,サービスリクエスタのインターフェースクラスであるCSCMsgSyncServiceDeliveryWSImpl.javaクラスのオブジェクトを生成します。
    なお,生成・取得したサービスリクエスタのインターフェースクラスのインスタンスは,複数のスレッドで共有できません。
    (例)

    CSCMsgSyncServiceDeliveryWSImpl ws = null;
    try {
         ws = locator.getCSCMsgSyncServiceDeliveryWSImpl();
    }catch (ServiceException e) {
                 e.printStackTrace();
                 return;
    }

     

    サービス部品への接続先は,WSDL定義内のService要素のaddress子要素であるlocation属性となります。サービスリクエスタのプログラム内で,サービス部品への接続先情報を取得する場合は,次のように記述します。
    (例)

    String url = locator.getCSCMsgSyncServiceDeliveryWSImplAddress();

     

    また,サービスリクエスタのプログラム内で,サービス部品への接続先を変更する場合は,次のように記述します。
    (例)

    java.net.URL endpoint
    = new java.net.URL("http://hostname:80/<コンテキストルート>
                     /services/CSCMsgSyncServiceDeliveryWSImpl");
    CSCMsgSyncServiceDeliveryWSImpl locator
    = locator.getCSCMsgSyncServiceDeliveryWSImpl(endpoint);

  3. 生成したCSCMsgSyncServiceDeliveryWSImpl.javaクラスのオブジェクトを使用して,同期受付(Webサービス)のメソッドを呼び出します。
    (例)要求電文がXMLの場合

    String result = ws.invokeXML(               // メソッドの呼び出し
                          serviceName,         // サービス名
                          clientID,            // クライアント相関ID
                          requestFormatID,     // リクエストフォーマットID
                          responseFormatID,    // レスポンスフォーマットID
                          operationName,       // オペレーション名
                          userData);           // ユーザ電文

    (例)要求電文がバイナリの場合

    byte[] resultBinary = ws.invokeBinary(      // メソッドの呼び出し
                             serviceName,      // サービス名
                             clientID,         // クライアント相関ID
                             requestFormatID,  // リクエストフォーマットID
                             responseFormatID, // レスポンスフォーマットID
                             operationName,    // オペレーション名
                             userDataBinary.length,  // ユーザ電文長
                             userDataBinary);  // ユーザ電文

    注意
    バイナリ電文の要求電文を送信できるのは,サービス部品側で使用している電文形式がバイナリ形式のときだけです。