「Web サービス」ウィザードを使用すると、既存の WSDL 文書からスケルトン Bean が簡単に作成できます。 スケルトン Bean には、WSDL 文書で説明するオペレーションに対応する一連のメソッドが含まれています。
Bean が作成されると、各メソッドには、Bean の編集をすることによって置き換えられる、単純な実装ができます。
始める前に
前提条件:
- ご使用のコンピューターの速度によっては WebSphere® Application Server が開始するまでに数分かかることがあるため、WebSphere Application Server を使用している場合は、Web サービス・ウィザードを実行する前にサーバーを開始しておくことを強くお勧めします。サーバーを開始するには、「サーバー」ビューでサーバーを選択し (「ウィンドウ」>「ビューの表示」>「サーバー」)、右クリックして「開始」を選択します。
- WSDL 文書を作成またはディスカバーし、プロジェクトにインポートします。使用できる WSDL ファイルは、サービス要素を含むもののみです。
注: JMS 上の SOAP Web サービスは、WebSphere Application Server V8.0 以上でサポートされますが、WebSphere Application Server Liberty Profile V8.5.5 ではサポートされません。JMS 上の SOAP を使用する場合は、WSDL ファイルが、
以下のいずれかのトランスポート属性 URI 値を使用している必要があります。
- http://www.w3.org/TR/soapjms/
- http://www.w3.org/2010/soapjms/
WSDL ファイルでの JMS 上の SOAP 宣言について詳しくは、「
SOAP over Java™ Message Service 1.0: Working Draft」の仕様を参照してください。
- EJB プロジェクトを作成し、それを新規の EAR プロジェクトに追加します。
- トランスポート・メソッドとして SOAP over HTTP を使用する場合は空の Web プロジェクトを作成し、
トランスポート・メソッドとして SOAP over JMS を使用する場合は EJB プロジェクトを作成して、
ルーター・プロジェクトとして機能させます。作成するプロジェクトは、
エンタープライズ Bean が含まれる EJB プロジェクトと同じ EAR に追加する必要があります。ルーター・モジュールの詳細については、『ルーター・モジュールの作成 (Creating router modules)』を参照してください。
- SOAP over JMS を使用する場合は、SOAP over JMS 用の
サーバーおよびサーバー構成を作成するの説明に従って、
JMS 用のサーバーおよびサーバー構成を作成する必要があります。
このタスクについて
WebSphere JAX-WS ランタイム環境を使用してスケルトン
Java Bean を WSDL 文書から作成する方法:
手順
- Java EE パースペクティブに切り替えます (「ウィンドウ」>「パースペクティブを開く」>「Java EE」)。
- エンタープライズ・エクスプローラー・ビューで
、作成ま
たはインポートした WSDL ファイルを選択します。
- 「ファイル」>「新規」>「その他」の順にクリックします。「Web サービス」を選択して、各種の Web サービス・ウィザードを表示します。「Web サービス」ウィザードを選択します。「次へ」をクリックします。
- 「Web サービス」ページ: Web サービス・タイプとして「トップダウン EJB Web サービス」を
選択します。
次の操作を実行するオプションもあります。
- スライダーを使用して完了させたい Web サービス開発のステージを選択します。
これにより、残りのウィザードのパネルでいくつかのデフォルト値が設定されます。
- 開発: Web サービスの WSDL 定義および実装を開発します。
これには、生成されたコード、WSDL ファイル、デプロイメント記述子、および Java ファイル (該当する場合) が入るモジュールの作成などのタスクが含まれます。
- アセンブル: これにより、Web サービスまたはクライアントをホストするプロジェクトが、ターゲット・アプリケーション・サーバーによって要求されたときに EAR に関連付けられるようになります。
- デプロイ: これにより、サービスのデプロイメント・コードが作成されるようになります。
- インストール: これにより、Web モジュールと EAR がターゲット・サーバーにインストールされ、構成されます。
WSDL ファイルのエンドポイントに対する変更が必要な場合、このステージで変更が行われます。
- 始動: これにより、サービスがサーバーにインストールされると、サーバーが始動するようになります。
- テスト: これにより、汎用サービス・クライアント、Web サービス・エクスプローラー、またはサンプル JSP を使用するなどの、サービスをテストするためのさまざまなオプションが提供されます。
- サーバーの選択: デフォルト・サーバーが表示されます。
サービスを別のサーバーにデプロイしたい場合には、サーバー・リンクをクリックして別のサーバーを指定してください。
- ランタイムの選択: デフォルトのランタイムが表示されます。
サービスを IBM® JAX-WS ランタイムにデプロイするには、ランタイム・リンクをクリックして、開いたウィンドウでそれを選択します。
このタスクでは、以下のサーバー・ランタイム環境がサポートされます。
- WebSphere Application Server V7.0 以上
- WebSphere Application Server Liberty Profile V8.5.5
- サービス・プロジェクトの選択: ワークスペースで選択されたプロジェクトが表示されます。
EJB プロジェクトのみがサポートされています。
別のプロジェクトと EAR を選択するには、プロジェ
クト・リンクをクリックするか、または名前を入力し
て、ウィザードでプロジェクトを作成できるようにし
ます。 クライアント Web プロジェクトとして選択したプロジェクトが、サービス Web プロジェクトとは異なること、またはクライアントが生成した成果物によってサービスが上書きされるようになっていることを確認します。
JAX-WS Web サービスの場合、サーバー・プロジェクトとクライアント・プロジェクトで同じ EAR を共有することができます。
- クライアントを作成したい場合には、生成したいプロキシーのタイプを選択し、クライアントについてステップを繰り返します。 クライアントは、後で、IBM WebSphere JAX-WS ランタイム環境を使用した WSDL 文書からの Web サービス・クライアントの作成で概説する手順に従って作成することができます。
- Web サービスのモニター: Web サービス・トラフィックを TCP/IP モニターを介して送信します。これにより、Web サービスによって生成される SOAP トラフィックを監視し、このトラフィックが WS-I に準拠しているかどうかをテストできます。
あるいは、TCP/IP モニターを使用した Web サービスのテストで説明するとおり、TCP/IP モニターを手動でセットアップすることもできます。
- Web サービスを公開します。
- 「WebSphere JAX-WS
トップダウン EJB Web サービス構成」ページ:
- 出力フォルダー: EJB スケルトンの生成先を入力するか、デフォルトを受け入れます。
- ターゲット・パッケージ: 生成される Java のパッケージ名を入力するか、デフォルトを受け入れます。
- EJB Web サービス・バインディング: Web サービスで HTTP または JMS バインディングのどちらを使用するかを選択します。
- ラッパー・スタイルを有効にする: WSDL から Java へのラッパー・スタイル・マッピングを有効にします。document/literal ラップ・パターンを実装する WSDL ドキュメントの場合は、XML スキーマ内にルート要素が宣言され、メッセージ・フローのオペレーション・ラッパーとして使用されます。要求と応答のそれぞれについて別個のラッパー要素定義が存在します。
つまり、オペレーションと同じ名前を持つ要素 (ラ
ッパー要素) は、そのコンテンツ要素の各々が生成済み Java メソッド・シグニチャーのパラメー
ターになるように分離されます。
- MTOM サポートを有効にする: このチェック・ボックスを選択すると、SOAP Message Transmission Optimization Mechanism が有効になり、バイナリー・コンテンツの伝送が最適化されます。MTOM について詳しくは、SOAP MTOM を参照してください。
- 生成する JAX-WS コードのバージョン: WebSphere Application Server V7.0 は、JAX-WS 2.0 または 2.1 に準拠したコードをサポートします。WebSphere Application
Server V8.0、V8.5、および WebSphere(r) Application Server Liberty Profile V8.5.5 は、JAX-WS 2.0、2.1、または 2.2 に準拠したコードをサポートします。
- WSDL をプロジェクトへコピー: これは、WSDL フ
ァイルをサービス・プロジェクトにコピーする場合に
選択します。選択しないと、必須の WSDL は、必要
な場合に、ランタイムによって動的に生成されます。 このオプションは、クライアントを後で作成する場合や WSDL を他のユーザーに公開する場合に便利です。
- 順序付け可能な JAXB クラスの生成: WebSphere Application Server および WebSphere(r) Application Server Liberty Profile V8.5.5 で、Java 6 ファセットを使用可能にすると、java.io.Serializable を実装する JAXB クラスの生成を選択できます。このインターフェースを実装していないクラスの状態は、シリアライズ済みになったりデシリアライズ済みになったりすることはありません。
- JAX-WS または JAXB バインディング・ファイルの指定: JAX-WS または JAXB カスタム・バインディング・ファイルを作成してある場合は、このチェック・ボックスを選択すると、それらのファイルを使用して Web サービスを作成できるようになります。これを選択すると、ウィザードの次のページでカスタム・バインディング宣言ファイルの場所を参照できるようになります。
- サービス実装クラス名のカスタマイズ: デフォルトのポート名をサービス実装クラス名マッピングに変更する場合、このチェック・ボックスを選択します。
- スキーマ・ライブラリーの生成: これにより、スキーマ・コードを
スキーマ・ライブラリーに生成することができます。 スキーマ・ライブラリ
ーを選択すると、後のページで、XSD 文書または
XSD 文書のグループからのプロジェクトへのマッピングをカ
スタマイズできます。
- Web サービス・デプロイメント記述
子の生成: JAX-WS Web サービスでは、デプロイメント情報は、ランタイムによって動的
に生成されます。静的デプロイメント記述子は必要で
はなくなりました。 このチェック・ボックスを選択すると上記の記述子が生成されます。
- ベンダー拡張機能を許可: このチェック・ボックスを選択すると、wsgen または wsimport コマンドに -extension オプションが追加されます。
-extension オプションは、JAX-WS 仕様で指定されていない機能のカスタム拡張を使用可能にするかどうか、または受け入れるかどうかを指定します。拡張を使用すると、アプリケーションが移植可能でなくなったり、アプリケーションを他の実装と相互運用できなくなることがあります。
詳しくは、WebSphere Application Server のインフォメーション・センターにある JAX-WS アプリケーション用の wsgen コマンドおよび JAX-WS アプリケーション用の wsimport コマンドのトピックを参照してください。
- 前のページで選択したオプションによ
っては、以下のページで Web サービス実装をカスタ
マイズするようにプロンプトが表示される場合がありま
す。
- 「WebSphere JAX-WS JMS バインディング構成」ページ: Web サービスでトランスポート方式として JMS を使用するように選択した場合、このページでバインディングに関する情報を入力する必要があります。
- JMS 宛先: 宛先タイプとしてキューまたはトピックを選択します。
- 宛先 JNDI 名: 宛先キューまたはトピックの JNDI 名。
- JMS 接続ファクトリー: 接続ファクトリーの JNDI 名。
- 初期コンテキスト・ファクトリー名: 使用する初期コンテキスト・ファクトリーの名前。
これは、java.naming.factory.initial プロパティーにマップされます。
- JNDI プロバイダー URL: これは java.naming.provider.url プロパティーにマップされます。
- 送達モード: 要求メッセージが永続かどうかを示します。
- 要求メッセージ存続時間: 要求メッセージの存続時間 (ミリ秒)。
値 0 は存続時間が無限であることを示します。
- JMS 要求メッセージ優先順位: 要求メッセージに関連付ける JMS 優先順位。
0 が最低の優先順位で、9 が最高の優先順位です。
- 応答先名: 要求のディスパッチ先であるポート・コンポーネントの名前。
- 接続ファクトリー・ユーザー ID: 接続ファクトリーへのアクセスを取得するために使用されるユーザー ID。
- 接続ファクトリー・パスワード: 接続ファクトリーへのアクセスを取得するために使用されるパスワード。
- SOAP/JMS 相互運用性プロトコルの使用: これを選択すると、W3C SOAP-JMS Binding Working Group に示されているプロトコルに、Web サービスが準拠します。
詳細については、以下のサイトを参照してください。SOAP-JMS Binding Working Group の章 (Charter of the SOAP-JMS Binding Working Group)
- カスタム JMS プロパティーの定義: これを選択するとページが立ち上がり、そこにプロパティー値のペアを入力できます。
- 「カスタム・バインディング宣言」ページ: JAX-WS または JAXB バインディング・ファイルを指定するオプションを選択した場合は、このページで、それらのファイルの場所を参照することができます。
- 「サービス実装構成」ページ: WSDL ファイルで定義されている各ポートについて、サービス実装クラスの名前を入力するか、または、デフォルトを受け入れることができます。
- 「スキーマ・プロジェクトの構成」ページ: スキーマ・ライブラリーを生
成することを選択した場合、このページを使用して
XSD 文書とプロジェクト間のマッピングをカスタ
マイズします。 このフィーチャーは、すべてのスキーマ従属関係が異なる targetNamespaces にある場合のみ有効です。
そうでない場合、ObjectFactory.java でコンパイル・エラーが発生します。
- 「WebSphere JAX-WS ルーター・プロジェクト構成 (WebSphere JAX-WS Router Configuration)」ページ: このページは、ターゲットが WebSphere Application Server ランタイム環境の場合に表示され、WebSphere Application Server Liberty Profile V8.5.5 の場合には表示されません。
- HTTP ルーター: ルーター・モジュールとして使用するプロジェクトの名前を入力します。
ルーター・モジュールは、特定のトランスポートの Web サービス・エンドポイントを提供します。
- JMS ルーター: ルーター・モジュールとして使用するプロジェクトの名前を入力します。
ルーター・モジュールは、特定のトランスポートの Web サービス・エンドポイントを提供します。
- MDB デプロイメント・メカニズム: メッセージ駆動型 Bean のデプロイメント・メカニズムとして、
JMS アクティベーション・スペックまたはリスナー・ポートから選択します。
- ActivationSpec JNDI 名: このメッセージ駆動型 Bean をデプロイするのに使用される、アクティベーション・スペックの JNDI 名を入力します。
この名前は、WebSphere Application Server に定義するアクティベーション・スペックの名前と一致していなければなりません。
- リスナー入力ポート名: ルーター・モジュールのリスナー・ポート名を入力します。
- 「Web サービスのテスト」ページ: ステップ 4a の Web サービスをテストすることを選択した場合、生成した Web サービスに関するテスト機能を選択し、「起動」をクリックします。これにより、Web サービスが、Web サービス・エクスプローラーまたは汎用サービス・クライアントで開きます。HTTP トランスポートを使用する Web サービスのテストには、
Web サービス・エクスプローラーのみ使用可能であることに注意してください。テストするオペレーションを選択し、必要な情報を入力して「実行」をクリックします。「状況」ペインに結果が表示されます。
「次へ」をクリックします。
- 「WebSphere JAX-WS Web サービス・クライアント構成 (WebSphere JAX-WS Web Services Client Configuration)」ページ: クライアントの生成を選択した場合、このページで以下の関連オプションを指定することができます。
- 出力フォルダー: クライアント・コードの生成先となる場所です。
- ターゲット・パッケージ: Web サービス・クライアント・ウィザードでは、いくつもの Java ファイルが生成されます。デフォルトでは、WSDL ファイルで指定されている名前空間に基づいてパッケージ名が作成されます。このデフォルトの振る舞いをオーバーライドするために、独自のパッケージ名を指定することができます。
- ポータブル・クライアントの生成: このチェック・ボックスを選択すると、異なるマシン間、あるいは WebSphere Application Server または WebSphere(r) Application Server Liberty Profile V8.5.5 の異なるインスタンス間で Web サービス・クライアント・コードを移動できるようになります。このオプ
ションを選択した場合、
WSDL 文書と、この WSDL
文書が依存する、すべての XML スキーマおよび他の WSDL 文書は、WEB-INF/wsdl 下のク
ライアント・プロジェクトにコピーされ、
このコピーを指す file:relativeURL
は、JAX-WS サービス・クラスの静的初期化ブロック
に注入されます。
- 生成されたクライアントの非同期呼び出しを使用可能にする: 非同期クライアントを使用可能にすることを選択した場合は、Web サービスのメソッドごとに 2 つのメソッドが追加で作成されます。それはポーリング・メソッドとコールバック・メソッドであり、クライアントが非同期で機能できるようにします。
- JAX-WS または JAXB バインディング・ファイルを指定する: JAX-WS または JAXB カスタム・バインディング・ファイルを作成してある場合は、このチェック・ボックスを選択すると、それらのファイルを使用して Web サービス・クライアントを作成できるようになります。これを選択すると、ウィザードの次のページでカスタム・バインディング宣言ファイルの場所を参照できるようになります。
- クライアント・プロキシー・クラス名をカスタマイズする: デフォルトのポート名をサービス実装クラス名マッピングに変更する場合、このチェック・ボックスを選択します。
- Web サービス・デプロイメント記述子の生成: JAX-WS Web サービスの場合、デプロイメント情報はランタイムによって動的に生成されます。静的デプロイメント記述子は不要になりました。このチェック・ボックスを選択すると上記の記述子が生成されます。
- 生成する JAX-WS コードのバージョン: WebSphere Application Server V7.0 の場合、JAX-WS 2.0 または 2.1 に準拠したコードを生成するオプションがあります。WebSphere Application Server V8.0、V8.5、および WebSphere Application Server Liberty Profile V8.5.5 の場合、JAX-WS 2.0、2.1、または 2.2 に準拠したコードを生成するオプションがあります。
- 「カスタム・バインディング宣言」ページ: JAX-WS または JAXB バインディング・ファイルを指定するオプションを選択した場合は、このページで、それらのファイルの場所を参照することができます。
- 「サービス実装構成」ページ:
「プロキシー生成の構成」
ページ: 定義されている各ポートについて、プロキシー・クラスの名前を入力するか、または、デフォルトを受け入れることができます。
- Web サービス・クライアント・テスト・ページ:
- 生成されたプロキシーをテストする: これを選択すると、Web ブラウザーでサンプル・クライアントが起動され、機能をテストできるようになります。
- テスト機能を選択します。生成されたプロキシーを汎用サービス・クライアントまたは Web サービス・エクスプローラーで
テストするか、またはサンプル JAX-WS 2.0 JSP を生成して使用することができます。
- フォルダー: JSP を使用してプロキシーをテストすることを選択した場合、JSP を配置するフォルダーを選択し、JSP に組み込むメソッドを選択できます。
- メソッド: 公開するメソッドを選択します。非同期呼び出しを有効にするオプションを選択した場合は、非同期メソッドもリストされます。
- サーバーでテストを実行: サーバーが自動的に始動するようになります。
タスクの結果
Web サービスの作成後、選択したオプションによっては、以下が発生する場合があります。
- 実装 Bean が
Java
エディターで開きます。実装 Bean には、Web サービスの基本機能のテストに使用できるスケルトン・コードが含まれています。あるいは、Web サービスに必要なビジネス・ロジックを実装してから、そのテストを行うこともできます。
- 生成したプロキシーを JAX-WS 2.0 JSP を使用してテストすることを選択した場合、プロキシーが http://localhost: port/WebProjectClient/sampleBeanName/WebServiceName/TestClient.jsp という URL で Web ブラウザーに起動されます。
このサンプル・アプリケーションを使用すると、メソッドを選択し、
そのメソッドに値を入力して「Invoke」をクリックすることにより、Web サービスをテストできます。
メソッドの結果は、結果ペインに表示されます。
これは、簡単なメソッド実装を備えた Java Bean スケルトンであるため、
値 -3 が戻されます。
- 生成したプロキシーを Universal Test Client によってテストすることを
選択した場合、例えば、次のように URL を指定すると、プロキシーがブラウザー・ウィンドウで起動されます。http://localhost:port/UTC/preload?object=BeanPackage.BeanServiceProxy
「オブジェクト」の下のプロキシー・スタブを展開し、Web サービスのメソッドを表示します。テストするメソッドをクリックし、「パラメーター」ペインに値を入力して
「Invoke」をクリックします。結果が生成されます。
- Web サービス・エクスプローラーを使用して Web サービスをテストすることを選択した場合は、エクスプローラーが開きます。テストするオペレーションを選択し、必要な情報を入力して「実行」をクリックします。「状況」ペインに結果が表示されます。