Webサービスクライアントアプリケーションを作成する手順について説明します。
ポイント
Webサービスクライアントを作成する場合は、必要なライブラリを以下の手順で追加する必要があります。
プロジェクトを選択し、コンテキストメニューから[プロパティー] > [Javaのビルド・パス] > [ライブラリー]タブ > [ライブラリーの追加]をクリックし、[サーバー・ランタイム]で[Interstage Application Server V12.0 (J2EE)]を指定して[完了]ボタンを押します。
続けて[外部JARの追加]で以下に存在するJARファイルを追加します。
<製品インストールフォルダ>\APS\J2EE\lib\isws-saaj-api.jar
続けて[順序およびエクスポート]タブで、2.で追加したJARファイルを[JRE システム・ライブラリー]よりも上に移動して[OK]ボタンを押してください。
Webサービスのインタフェース情報(WSDLファイル)の取得
Webサービスクライアントを作成するために、WSDLファイルを取得します。
Interstage Application ServerのWebサービスの場合、Interstage管理コンソールの左側のツリーから配備中のWebサービスをクリックします。[Webサービス環境定義]タブの[WSDLのダウンロード]ボタンから、WSDLがダウンロードできます。
Webサービスの開発資産がある場合には、開発資産のWSDLを利用することもできます。
ポイント
WSDLから生成されるファイルには、WSDLファイルに記述されているlocation情報(接続先のWebサービスのURL)が出力されます。運用環境を変更する場合などのため、アプリケーションを再構築することなく、環境設定で接続先を変更することは可能ですが、利用するWebサービスのlocation情報が記述されているWSDLファイルを使うと手間がかかりません。
Interstage管理コンソールより取得できる公開用WSDLファイルは、取得時に配備先の環境に合わせてWSDLファイルのlocation情報が更新されており、これを使用すると接続先についてユーザが意識する必要はありません。
ただし、Webサービスアプリケーションの開発も同時に行うような場合には、デバッグ環境のlocation情報をWebサービスウィザードで指定しておくことで、配備などの作業を行わずに、開発資産のWSDLファイルをそのまま使うことができ、WebサービスアプリケーションとWebサービスクライアントの開発を平行して行うことができます。
WebサービスクライアントがJ2EEアプリケーションで、サービスインタフェースをJNDIのlookupを利用して取得する場合は、WSDLファイルに記述されているlocation情報を意識する必要はありません。
スタブの生成
Webサービスのインタフェースを記述したWSDLファイルから、Webサービスにアクセスするために必要なJavaクラスを生成することができます。[新規]ウィザードから[Webサービス] > [IJServer] > [Webサービスクライアント(JAX-RPC)]を選択し、ウィザードで生成します。ウィザードでの設定は、以下を参考にしてください。
ソースフォルダ
Javaソースファイルの生成先フォルダを指定します。
WSDLファイル
アクセスしたいWebサービスのインタフェース情報が定義されたWSDLファイルを指定します。
ユーザ定義型クラスを生成する
サービスエンドポイントインタフェースで利用しているユーザ定義型クラスを生成するかどうかを指定します。
注意
Webサービスクライアント(JAX-RPC)ウィザードを使用するには、Interstage Application Server機能またはInterstage Application Serverクライアントパッケージをインストールしておく必要があります。
以下にWebサービスクライアント(JAX-RPC)ウィザードで生成されるファイルを示します。
生成ファイル | ファイル名 | 内容 |
---|---|---|
サービスエンドポイントインタフェース | <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サービスにアクセスするクライアントアプリケーションを作成します。
Webサービスにアクセスするには、スタブを取得して、スタブのメソッドを呼び出します。
スタブを取得するには、以下の方法があります。
JNDIを使用してServiceオブジェクトをlookupする方法
ServiceFactoryを使用する方法
JNDIを使用してServiceオブジェクトをlookupしたスタブの取得
Webアプリケーション、EJBアプリケーションまたはJ2EEアプリケーションクライアントからWebサービスを呼び出す場合、JNDIを使用してServiceオブジェクトをlookupすることができます。
deployment descriptorの編集
WebサービスクライアントアプリケーションからJNDIを使用してServiceオブジェクトをlookupする場合、クライアントアプリケーションの形態に応じて以下のdeployment descriptorにservice reference記述を定義する必要があります。
クライアントアプリケーションの形態 | deployment descriptor |
---|---|
Webアプリケーション | web.xml |
EJBアプリケーション | ejb-jar.xml |
J2EEアプリケーションクライアント | application-client.xml |
Serviceオブジェクトを取得してスタブからWebサービスにアクセス
InitialContextオブジェクトを生成する
InitialContextオブジェクトを新規に生成します。
Serviceオブジェクトを取得する
取得したInitialContextオブジェクトのlookupメソッドを使用して、Serviceオブジェクトを取得します。
lookupの引数には、以下の文字列を指定します。
java:comp/env/[deployment descriptorの<service-ref-name>に指定した値]
スタブオブジェクトを取得する
取得したServiceオブジェクトのメソッドを使用し、スタブオブジェクト(サービスポイントインタフェースを実装したクラスのインスタンス)を取得します。
スタブオブジェクトのメソッドを呼び出す
取得したスタブオブジェクトのメソッドを呼び出し、Webサービスにアクセスします。
注意
JNDIを利用してServiceオブジェクトをlookupする場合は、単一のInitialContextオブジェクトを複数のスレッドで使用することはできません。
ポイント
J2EEアプリケーションクライアントからJNDIを使用する場合は、JNDIサービスプロバイダの環境設定をする必要があります。JNDIサービスプロバイダの環境設定については、"Interstage Application Server J2EE ユーザーズガイド(旧版互換)"を参照してください。
ServiceFactoryを使用したスタブの取得
ServiceFactoryオブジェクトを取得する
JAX-PRCで提供されているjavax.xml.rpc.ServiceFactoryクラスのnewInstanceメソッドを呼び出し、ServiceFactoryオブジェクトを取得します。
Serviceオブジェクトを取得する
取得したServiceFactoryオブジェクトのloadService(java.lang.Class)メソッドを使用し、Serviceオブジェクト(サービスインタフェースを実装したクラスのインスタンス)を取得します。
スタブオブジェクトを取得する
取得したServiceオブジェクトのメソッドを使用し、スタブオブジェクト(サービスエンドポイントインタフェースを実装したクラスのインスタンス)を取得します。
スタブオブジェクトのメソッドを呼び出す
取得したスタブオブジェクトのメソッドを呼び出し、Webサービスにアクセスします。
使用するメソッドの詳細は、"Interstage Application Server J2EE ユーザーズガイド(旧版互換)"およびWebサービス関連のjavadocを参照してください。