ページの先頭行へ戻る
Interstage Studio V12.0.0 ユーザーズガイド
FUJITSU Software

C.3.5 Webサービスクライアントを作成する

Webサービスクライアントアプリケーションを作成する手順について説明します。

ポイント

Webサービスクライアントを作成する場合は、必要なライブラリを以下の手順で追加する必要があります。

  1. プロジェクトを選択し、コンテキストメニューから[プロパティー] > [Javaのビルド・パス] > [ライブラリー]タブ > [ライブラリーの追加]をクリックし、[サーバー・ランタイム]で[Interstage Application Server V12.0 (J2EE)]を指定して[完了]ボタンを押します。

  2. 続けて[外部JARの追加]で以下に存在するJARファイルを追加します。
    <製品インストールフォルダ>\APS\J2EE\lib\isws-saaj-api.jar

  3. 続けて[順序およびエクスポート]タブで、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)]を選択し、ウィザードで生成します。ウィザードでの設定は、以下を参考にしてください。

注意

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したスタブの取得

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サービスにアクセス

  1. InitialContextオブジェクトを生成する
    InitialContextオブジェクトを新規に生成します。

  2. Serviceオブジェクトを取得する
    取得したInitialContextオブジェクトのlookupメソッドを使用して、Serviceオブジェクトを取得します。
    lookupの引数には、以下の文字列を指定します。
    java:comp/env/[deployment descriptorの<service-ref-name>に指定した値]

  3. スタブオブジェクトを取得する
    取得したServiceオブジェクトのメソッドを使用し、スタブオブジェクト(サービスポイントインタフェースを実装したクラスのインスタンス)を取得します。

  4. スタブオブジェクトのメソッドを呼び出す
    取得したスタブオブジェクトのメソッドを呼び出し、Webサービスにアクセスします。

注意

JNDIを利用してServiceオブジェクトをlookupする場合は、単一のInitialContextオブジェクトを複数のスレッドで使用することはできません。

ポイント

J2EEアプリケーションクライアントからJNDIを使用する場合は、JNDIサービスプロバイダの環境設定をする必要があります。JNDIサービスプロバイダの環境設定については、"Interstage Application Server J2EE ユーザーズガイド(旧版互換)"を参照してください。

ServiceFactoryを使用したスタブの取得

  1. ServiceFactoryオブジェクトを取得する
    JAX-PRCで提供されているjavax.xml.rpc.ServiceFactoryクラスのnewInstanceメソッドを呼び出し、ServiceFactoryオブジェクトを取得します。

  2. Serviceオブジェクトを取得する
    取得したServiceFactoryオブジェクトのloadService(java.lang.Class)メソッドを使用し、Serviceオブジェクト(サービスインタフェースを実装したクラスのインスタンス)を取得します。

  3. スタブオブジェクトを取得する
    取得したServiceオブジェクトのメソッドを使用し、スタブオブジェクト(サービスエンドポイントインタフェースを実装したクラスのインスタンス)を取得します。

  4. スタブオブジェクトのメソッドを呼び出す
    取得したスタブオブジェクトのメソッドを呼び出し、Webサービスにアクセスします。

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