Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第4章 Webサービスアプリケーションを開発する | > 4.2 開発の流れ |
ここでは、Webサービスクライアントアプリケーションを作成する手順について、Apdesignerの使い方を中心に説明します。
Webサービスクライアントアプリケーションを作成する場合には、ビルドパスにJ2EEクラスパスコンテナを追加する必要があります。
また、WebサービスクライアントアプリケーションをJ2EEクライアントアプリケーションなどのJavaアプリケーションとして動作させる場合には、J2EEクラスパスコンテナの詳細設定においてWebサービスクライアントのオプションを設定することで、実行確認まで行うことができます。
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サービスクライアント生成ウィザードにより、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サービスにアクセスするには、以下のようにスタブを取得し、スタブのメソッドを呼び出します。
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を参照してください。
目次 索引 |