Apdesigner プログラマーズガイド
目次 索引 前ページ次ページ

第2部 アプリケーション開発編> 第4章 Webサービスアプリケーションを開発する> 4.2 開発の流れ

4.2.2 Webサービスクライアントアプリケーションを作成する

ここでは、Webサービスクライアントアプリケーションを作成する手順について、Apdesignerの使い方を中心に説明します。

Webサービスクライアントアプリケーションを作成する場合には、ビルドパスにJ2EEクラスパスコンテナを追加する必要があります。
また、WebサービスクライアントアプリケーションをJ2EEクライアントアプリケーションなどのJavaアプリケーションとして動作させる場合には、J2EEクラスパスコンテナの詳細設定においてWebサービスクライアントのオプションを設定することで、実行確認まで行うことができます。

+Webサービスのインタフェース情報(WSDLファイル)を入手する

Webサービスクライアントを作成するにはWSDLファイルが必要です。

Interstage Application ServerのWebサービスの場合、Interstage管理コンソールのワークユニット > "IJServer名" > [アプリケーション状態/配備解除]タブでWebモジュールを選択して、[Webサービス環境定義]タブよりそのWebサービスの公開用WSDLを取得できます。
Webサービスの開発資産がある場合には、開発資産のWSDLを利用することもできます。

WSDLから生成されるファイルには、WSDLファイルに記述されているlocation情報(接続先のWebサービスのURL)が出力されます。運用環境を変更する場合などのため、アプリケーションを再構築することなく、環境設定で接続先を変更することは可能ですが、利用するWebサービスのlocation情報が記述されているWSDLファイルを使うと手間がかかりません。
Interstage管理コンソールより取得できる公開用WSDLファイルは、取得時に配備先の環境に合わせてWSDLファイルのlocation情報が更新されており、これを使用すると接続先についてユーザが意識する必要はありません。
ただし、Webサービスアプリケーションの開発も同時に行うような場合には、デバッグ環境のlocation情報をWebサービス開発支援ウィザードで指定しておくことで、配備などの作業を行わずに、開発資産のWSDLファイルをそのまま使うことができ、WebサービスアプリケーションとWebサービスクライアントの開発を平行して行うことができます。

+Webサービスクライアント生成ウィザードでスタブを生成する

Webサービスクライアント生成ウィザードにより、WSDLファイルからからWebサービスクライアントアプリケーションに必要なファイルを生成することができます。

Webサービスクライアント生成ウィザードを使用するには、Interstage Application Server機能もしくはInterstage Application Serverクライアントパッケージをインストールしておく必要があります。

Webサービスクライアント生成ウィザードは、以下の手順で起動します。

J2EEパースペクティブから操作する場合:

その他のパースペクティブから操作する場合:

Webサービスクライアント生成ウィザードの詳細については、ウィザードのヘルプを参照してください。

以下にWebサービスクライアント生成ウィザードで生成されるファイルを示します。

生成ファイル

ファイル名

内容

サービスエンドポイントインタフェース

WSDLの<portType名>.java

利用するWebサービスエンドポイントのインタフェース定義をJavaのインタフェースで記述したものです。

サービスインタフェース

WSDLの<service名>.java

Webサービスに含まれるWebサービスエンドポイントのスタブを取得するためのインタフェースです。

ユーザ定義型クラス

xxxxx.java

ユーザ固有の型をWebサービスで利用している場合に生成されます。

Holderクラス

xxxxxHolder.java

パラメタがoutやinout型の場合で、ユーザ固有の型や配列など標準のHolderクラスが無い場合に生成されます。

その他のクラス

_isws_ + XXXXX +.java

Webサービスクライアントの実行に必要なクラスです。アプリケーションでこれらのクラスを意識して使用する必要はありません。

ファイル生成時のWSDLのXML型からJava型の変換規則については、"Interstage Application Server J2EEユーザーズガイド"を参照してください。

Webサービスアプリケーションも作成している場合、Webサービスアプリケーション時に作成したサービスエンドポイントインタフェースと、Webサービスクライアント時にWSDLファイルから生成したサービスエンドポイントインタフェースは同一であるとは限りません。そのため、Webサービスクライアントの開発ではWSDLファイルから生成したものを使用してください。

+スタブを利用してWebサービスクライアントを開発する

生成されたスタブなどを利用してWebサービスにアクセスするには、以下のようにスタブを取得し、スタブのメソッドを呼び出します。

  1. ServiceFactoryオブジェクトを取得する
    JAX-RPCで提供されているjavax.xml.rpc.ServiceFactoryクラスのnewInstanceメソッドを呼び出し、ServiceFactoryオブジェクトを取得します。
  2. Serviceオブジェクトを取得する
    取得したServiceFactoryオブジェクトのloadService(java.lang.Class)メソッドを使用し、Serviceオブジェクト(サービスインタフェースを実装したクラスのインスタンス)を取得します。
  3. スタブオブジェクトを取得する
    取得したServiceオブジェクトのメソッドを使用し、スタブオブジェクト(サービスエンドポイントインタフェースを実装したクラスのインスタンス)を取得します。
  4. スタブオブジェクトのメソッドを呼び出す
    取得したスタブオブジェクトのメソッドを呼び出し、Webサービスにアクセスします。

[スタブの取得例]

package sample;

import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.holders.StringHolder;

public class WordClient {

      public WordClient() {
      }

      public void run(String[] args) {
               try {
                         ServiceFactory serviceFactory = ServiceFactory.newInstance();
                         WordServerService service = (WordServerService)serviceFactory.loadService(WordServerService.class);
                         WordServer wordServer = service.getWordServerPort();

                         String param1 = "Test is OK" ;
                         StringHolder param2 = new javax.xml.rpc.holders.StringHolder("") ;
                         int wordNumber = wordServer.countWord(param1,param2) ;

                         System.out.println("word number " + wordNumber) ;
                         System.out.println("words " + param2.value) ;
                } catch (RemoteException e) {
                         e.printStackTrace();
                } catch (ServiceException e) {
                        e.printStackTrace();
                }
       }

       public static void main(String[] args) {
                WordClient object = new WordClient();
                object.run(args);
       }

}

使用するメソッドの詳細は、"Interstage Application Server J2EEユーザーズガイド"およびWebサービス関連のjavadocを参照してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2006