この記事では J2EE 開発者に、WebSphere Enterprise Service Bus V7 (以降、Service Bus とします) と WebSphere Service Registry and Repository V7 (以降、Service Registry とします) の統合方法を示す単純なソリューションを作成する手順を紹介します。開発用のツールとして使用するのは、WebSphere Integration Developer V7 (以降、Integration Developer とします) です。
Service Registry は、WSDL (Web Services Description Language)、SCDL (Service Component Definition Language)、XML (Extensible Markup Language)、XSD (XML Schema Definition) などの再利用可能なサービス文書を管理するための中央リポジトリーです。これらのサービス文書をビルディング・ブロックとして使って複合アプリケーションを開発し、そのアプリケーションを Service Bus ランタイムにデプロイすることができます。
エンタープライズ・サービス・バスとして使用するのは、WebSphere Application Server (以降、WAS とします) ベースのランタイム環境である Service Bus です。Service Bus のメディエーション層を使用して、メディエーション・プリミティブからなるメディエーション・フローを実行します。メディエーション・プリミティブは、統合ソリューションを迅速に作成できるようにあらかじめ作成された機能を提供します。このようなメディエーション・プリミティブの 1 つは、エンドポイント・ルックアップです。この記事ではエンドポイント・ルックアップ・メディエーション・プリミティブを使用して、メディエーション・フローの中から Service Registry に対して照会を実行します。
このソリューションを完成させるまでのステップを要約すると、まず、Service Bus に常駐するバックエンド・サービスを作成します。次に、Service Registry に対してルックアップを実行するメディエーション・フローを定義します。このメディエーション・フローは、バックエンド・サービスと同じ Service Bus ランタイム上で動作します。そして最後に JAX-WS (Java API for XML Web Services) を使用した JSP (JavaServer Page) ベースの Web サービスのクライアントを作成して、この統合シナリオをテストします。
記事で説明する手順を開始する前に、次の前提条件を満たすようにしてください。
- Integration Developer が Windows 動作環境にインストールされていること
- Service Bus が 1 台のサーバーにインストールされているか、クラスター構成でインストールされていて、関連するサーバーが起動していること
- Service Registry が 1 台のサーバーに (Service Bus インストール済み環境にローカルに) インストールされているか、クラスター構成でインストールされていて、関連するサーバーが起動していること
- Service Registry の定義が構成済みで、接続が正常に確立されていること
- IBM HTTP Server V7 (以降、IHS とします) が (Service Bus インストール済み環境にローカルに) インストールされて構成されていること
まずは、Java 実装で表現されたサンプル・バックエンド・サービスを作成するところから取り掛かります。このサービスは、サービスが実行されているアプリケーション・サーバーの名前を返します。このシナリオで使用するアプリケーション・サーバー・プロファイルは、Service Bus のプロファイルです。
- 「Start (スタート)」 > 「All Programs (すべてのプログラム)」 > 「IBM WebSphere Integration Developer」 > 「IBM WebSphere Integration Developer V7.0」 > 「WebSphere Integration Developer V7.0」の順に選択して、Integration Developer を起動します。
- Integration Developer ワークスペースで、「File (ファイル)」 > 「New (新規)」 > 「Integration Solution (統合ソリューション)」の順にクリックします。
- 図 1 に示すダイアログで、「
Integration solution name (統合ソリューション名)」フィールドに 「IntegrationSolution」 と入力して「Next (次へ)」をクリックします。
図 1.新規統合ソリューション・ダイアログ
- 次に表示されるダイアログでは、図 2 に示されているように、3 つすべてのプロジェクトをデフォルト名のまま選択し、「Finish (完了)」をクリックしてウィザードを完了します。
図 2. プロジェクトの追加ダイアログ
- 図 3 に示すように、「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションにある、3 つのプロジェクトが表示されていることを確認します。
図 3. 「Business Integration (ビジネス・インテグレーション)」ビューに一覧表示されたプロジェクト
- 「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションにある「IntegrationSolution_Library」を展開し、「Interfaces (インターフェース)」を右クリックしてコンテキスト・メニューから「New (新規)」 > 「Interface (インターフェース)」の順に選択します。
図 4. インターフェース・ウィザードの起動
- 「Name (名前)」フィールドに
ServiceInterfaceと入力し、「Finish (完了)」をクリックしてウィザードを完了します。
図 5. インターフェースの作成ダイアログ
- 図 6 に示すように、新規に作成したインターフェースがインターフェース・エディターに表示されます。
図 6. インターフェース・エディター
- 図 7 に示すように、「Add Request Response Operation (要求/応答操作の追加)」アイコンをクリックし、操作の名前として「
getServerResponse」と入力します。
図 7. 要求/応答操作の追加
- 「File (ファイル)」 > 「Save (保存)」の順にクリックして、これまでに行った変更を保存します。
- 「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションにある「IntegrationSolution_BackendModule」を展開し、「Assembly Diagram (アセンブリー・ダイアグラム)」をダブルクリックしてアセンブリー・エディターを起動します。
図 8. 「IntegrationSolution_BackendModule」のアセンブリー・ダイアグラム
- 空白のキャンバスに、「Palette (パレット)」リストの「Components (コンポーネント)」フォルダーから「Java」コンポーネントを挿入し、「
BackendComponent」という名前を付けます。
図 9. 「Java」コンポーネント
- 図 10 に示すように、「BackendComponent」を選択して表示されるポップアップから「Add Interface (インターフェースの追加)」アイコンをクリックします。
図 10. インターフェースの追加
- 「Add Interface (インターフェースの追加)」ダイアログで「ServiceInterface」を選択し、「OK」をクリックします。
図 11. 「ServiceInterface」の選択
- インターフェースが正常に追加されていることを確認します。
図 12. インターフェースの確認
- 「BackendComponent」を右クリックして、コンテキスト・メニューから「Generate Implementation (実装の生成)」を選択します。
- パッケージ名の入力を求めるプロンプトが出されたら、「com.ibm.au.samples」と入力して「OK」をクリックします。
- 図 13 に示すように、Java エディターに BackendComponentImpl1.java のコードが表示されます。
図 13.BackendComponentImpl1.java
getServerResponseメソッドの本体を図 14 に示すコード・スニペットに置き換えます。
図 14. getServerResponse メソッド
- 「File (ファイル)」 > 「Save All (すべて保存)」の順にクリックして、これまでに行った変更を保存します。
- 「IntegrationSolution_BackendModule」アセンブリー・ダイアグラムに切り替えます。
- 「BackendComponent」 を右クリックして、コンテキスト・メニューから「Generate Export (エクスポートの生成)」 > 「Web Service Binding (Web サービス・バインディング)」の順に選択します。
- 「SOAP1.1/HTTP」 トランスポート・プロトコルを選択し、「Finish (終了)」をクリックしてウィザードを完了します。
図 15. トランスポート・プロトコルの選択
- Web サービス・バインディング・エクスポートが正常に生成されていることを確認します。
図 16. 「BackendComponent」の Web サービス・バインディング・エクスポート
- 「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションにある「IntegrationSolution_Library」を展開し、「ServiceInterfaceExport1_ServiceInterfaceHttpPort」をダブルクリックして、このファイルを WSDL エディターに開きます。
- 「ServiceInterfaceExport1_ServiceInterfaceHttpPort」を選択し、「Address (アドレス)」フィールドに
http://<ホスト名>:<ポート番号>/IntegrationSolution_BackendModuleWeb/sca/ServiceInterfaceExport1」と入力します (<ホスト名> は、Service Bus がインストールされているマシンの完全修飾ドメイン名です。<ポート番号> の値は、Integrated Solutions Console で「Servers (サーバー)」 > 「Server Types (サーバー・タイプ)」 > 「WebSphere application servers (WebSphere アプリケーション・サーバー)」 > 「[Service Bus アプリケーション・サーバー]」 > 「Ports (ポート)」 > 「WC_defaulthost」の順に選択すると、確認することができます。ここで、[Service Bus アプリケーション・サーバー] は、Service Bus プロファイルのデフォルト・アプリケーション・サーバーです)。
図 17. 「BackendModule」エクスポートのポート・アドレスの変更
- 「File (ファイル)」 > 「Save All (すべて保存)」の順にクリックして、これまでに行った変更を保存します。
- 「File (ファイル)」 > 「Export (エクスポート)」の順にクリックしてエクスポート・ウィザードを起動します。
- 表示されたダイアログで、「Business Integration」フォルダー配下の「Integration modules and libraries (統合モジュールおよびライブラリー)」を選択し、「Next (次へ)」をクリックして次に進みます。
図 18. 統合モジュールおよびライブラリーのエクスポート
- 次のダイアログでは、「Files for server deployment (サーバー・デプロイメント用ファイル)」を選択し、エクスポートするプロジェクトとして 「IntegrationSolution_BackendModule」 を選択してから「Next (次へ)」をクリックします。
図 19. プロジェクトの選択
- アーカイブ・ファイル名 (例えば、「
IntegrationSolution_BackendModule.ear」) を入力し、「Target directory (ターゲット・ディレクトリー)」にプロジェクトのエクスポート先を指定します。「Finish (終了)」をクリックしてウィザードを完了します。
図 20. アーカイブ・ファイル名の指定
- Service Registry にアップロードする WSDL ファイルをエクスポートするために、「File (ファイル)」 > 「Export (エクスポート)」の順に選択します。
- 表示されたダイアログで、「Business Integration」フォルダー配下の「WSDL and XSD (WSDL および XSD)」を選択し、「Next (次へ)」をクリックして次に進みます。
図 21. WSDL および XSD のエクスポート
- 図 22 に示すダイアログでは、以下の操作を行います。
- 「IntegrationSolution_Library」プロジェクトを選択します。
- WSDL ファイルとして、「IntegrationSolution_BackendModule_ServiceInterfaceExport1.wsdl」と「ServiceInterface.wsdl」を選択します。
- 「Target directory (ターゲット・ディレクトリー)」に WSDL ファイルのエクスポート先を指定します。
- 「Finish (終了)」をクリックします。
図 22. WSDL ファイルの選択
Service Registry へのサービスのアップロード
このセクションでは、前のセクションで新たに作成したサービスを Service Registry にアップロードする手順を紹介します。その後、アップロードしたサービスにプロパティーを追加し、これらのプロパティーを照会ストリングの一部として使用して、サービスの照会を実行します。
http://<ホスト名>:<ポート番号>/ServiceRegistryにアクセスして Service Registry Console にログオンします (<ホスト名> は、Service Registry がインストールされているマシンの完全修飾ドメイン名です。<ポート番号> の値は、Integrated Solutions Console で「Servers (サーバー)」 > 「Server Types (サーバー・タイプ)」 > 「WebSphere application servers (WebSphere アプリケーション・サーバー)」 > 「[Service Registry アプリケーション・サーバー]」 > 「Ports (ポート)」 > 「WC_defaulthost」の順に選択すると、確認することができます。ここで、[Service Registry アプリケーション・サーバー] は、Service Registry プロファイルのデフォルト・アプリケーション・サーバーです)。- 「Actions (アクション)」 > 「Load Documents (文書のロード)」の順にクリックします。
図 23. サービス文書のロード
- 次の画面では、「Local file system (ローカル・ファイルシステム)」を選択し、パスとしては「IntegrationSolution_BackendModule_ServiceInterfaceExport1.wsdl」を指定し、さらに以下の操作を行います。
- 「Document type (文書タイプ)」として 「WSDL」 を選択します。
- 「Enter document description (文書の説明の入力)」には「
ServiceBackend」と入力します。 - 「Enter document version (文書のバージョンの入力)」には「1.0」と入力します。
- 「OK」をクリックします。
図 24. バックエンド・サービス WSDL の選択
- 次の画面では、「Add (追加)」をクリックします。
図 25. サービス・インターフェースの追加
- 次の画面では、「Local file system (ローカル・ファイルシステム)」を選択し、パスとしては「IntegrationSolution_BackendModule_ServiceInterfaceExport1.wsdl」を指定し、さらに以下の操作を行います。
- 「Document type (文書タイプ)」として「WSDL」を選択します。
- 「Enter document description (文書の説明の入力)」には「
ServiceInterface」と入力します。 - 「Enter document version (文書のバージョンの入力)」には「1.0」と入力します。
- 「OK」をクリックします。
図 26. サービス・インターフェース WSDL の選択
- 次の画面では、「Finish (終了)」をクリックして、ウィザードを完了します。
図 27. サービス文書のロード
- サービス文書が正常にロードされていることを確認します。
図 28. 正常にロードされたサービス文書
- 図 29 に示す検索フィールドに「
ServiceInterfaceExport1_ServiceInterfaceHttpPort」と入力し、検索アイコンをクリックします。
図 29. 文書の検索
- 検索結果の画面では、「Object Type (オブジェクト・タイプ)」が「Port (ポート)」となっている「ServiceInterfaceExport1_ServiceInterfaceHttpPort」リンクをクリックします。
図 30. 照会結果
- 次の画面では、「Additional Properties (追加プロパティー)」セクションを展開し、画面右上の「Edit Properties (プロパティーの編集)」をクリックします。
図 31. 文書プロパティーの編集
- 「Additional Properties (追加プロパティー)」セクションで、「Add Property (プロパティーの追加)」をクリックします。
図 32. プロパティーの追加
- 「Add Property (プロパティーの追加)」セクションで、「Custom Property Name (カスタム・プロパティー名)」フィールドに「
sampleProperty」と入力し、「Add (追加)」をクリックします。
図 33. カスタム・プロパティー名の追加
- カスタム・プロパティーとして追加した「sampleProperty」フィールドに値として「
abc123def」と入力して、「OK」をクリックします。
図 34. カスタム・プロパティー値の追加
- 「Additional Properties (追加プロパティー)」セクションを展開して、カスタム・プロパティーが正常に追加されていることを確認します。
図 35. カスタム・プロパティーの確認
- 続いてメニューから、「Actions (アクション)」 > 「Query Wizard (照会ウィザード)」の順にクリックします。
図 36. 照会ウィザードの起動
- 表示される画面で、「Select the entity type (エンティティー・タイプの選択)」のドロップダウン・リストから「WSDL Ports (WSDL ポート)」を選択し、「Next (次へ)」をクリックします。
図 37. エンティティー・タイプの選択
- 「Query Wizard (照会ウィザード)」の「Enter details (詳細の入力)」ページで以下の値を指定した後、「Next (次へ)」をクリックして先に進みます。
- 「Property name (プロパティー名)」フィールドに「
sampleProperty」と入力します。 - 「Property value (プロパティー値)」フィールドに 「
abc123def」 と入力します。
- 「Property name (プロパティー名)」フィールドに「
図 38. プロパティー名およびプロパティー値の入力
- 「Query Wizard (照会ウィザード)」の「Summary (要約)」ページで「Finish (終了)」をクリックして、照会を実行します。
図 39. 照会の要約
- 照会結果の画面では、「ServiceInterfaceExport1_ServiceInterfaceHttpPort」リンクをクリックします。
図 40. 照会結果
- 「sampleProperty」というカスタム・プロパティーが存在することを確認します。
図 41. 追加プロパティー
このセクションでは、メディエーション・フローを定義する手順を説明します。このメディエーション・フローの中では、エンドポイント・ルックアップ・メディエーション・プリミティブとトレース・メディエーション・プリミティブを使用します。前者のメディエーション・プリミティブは、デフォルトのサービス・レジストリー (Service Bus に定義済みで、接続が正常に確立されているはずです) に対してルックアップを行います。後者は、障害時のトラブルシューティングを容易にするためのメディエーション・プリミティブです。
- Integration Developer 内で、「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションにある「IntegrationSolution_MediationModule」プロジェクト配下の「Assembly Diagram (アセンブリー・ダイアグラム)」をダブルクリックしてアセンブリー・エディターを起動します。「Mediation Flow (メディエーション・フロー)」コンポーネントには、「SampleMediation」という名前を付けます (デフォルトの「Mediation Flow (メディエーション・フロー)」コンポーネントは、メディエーション・モジュールを作成した時点で作成されます)。
図 42. メディエーション・モジュール
- アセンブリー・エディターで「SampleMediation」を選択し、表示されるポップアップから「Add Interface (インターフェースの追加)」アイコンをクリックします (図 43 を参照)。
図 43. インターフェースの追加
- 表示される「Add Interface (インターフェースの追加)」ダイアログで、「ServiceInterface」を選択し、「OK」をクリックします。
- アセンブリー・エディターで「SampleMediation」を選択し、表示されるポップアップから「Add Reference (参照の追加)」アイコンをクリックします (図 44 を参照)。
図 44. 参照の追加
- 表示される「Add Reference (参照の追加)」ダイアログで、「ServiceInterface」を選択し、「OK」をクリックします。
- アセンブリー・エディターで「SampleMediation」を右クリックして、コンテキスト・メニューから「Generate Implementation (実装の生成)」を選択します。
- 「Generate Implementation (実装の生成)」ダイアログで、「IntegrationSolution_MediationModule」フォルダーを選択して「OK」をクリックします。
- 図 45 に示すメディエーション・フロー・エディターに 「SampleMediation」 コンポーネントが表示されます。
図 45. メディエーション・フロー・エディター
- メディエーション・フロー・エディターで「getServerResponse」リンクをクリックし、表示されるポップアップで「Service Integration (サービス統合)」リンクをクリックします (図 46 を参照)。
図 46. メディエーション・フローの作成
- 「Integrate Services (サービスの統合)」ダイアログで、「Add (追加)」をクリックして「ServiceInterfacePartner」参照を選択します。「Create a separate resonse flow… (…別個の応答フローを作成する)」オプションはチェック・マークが付いたままの状態で「OK」をクリックし、メディエーション・フローを作成します。
図 47. メディエーション・フローの作成
- メディエーション・フロー・エディターに「Request (要求)」タブと「Response (応答)」タブの両方が表示されていることを確認します。
図 48. 生成された「Request (要求)」フローと「Response (応答)」フロー
- 「Request (要求)」フローに「Trace (トレース)」メディエーション・プリミティブ (「Palette (パレット)」の「Tracing (トレーシング)」フォルダー配下にあります) を 3 つ追加し、それぞれ「
BeforeLookup」、「AfterLookup」、「NoMatchFound」という名前を付けます (図 49 を参照)。
図 49. 「Request (要求)」フローへの「Trace (トレース)」メディエーション・プリミティブの追加
- 「Endpoint Lookup (エンドポイント・ルックアップ)」メディエーション・プリミティブ (「Palette (パレット)」の「Routing (ルーティング))フォルダー配下にあります) を追加し、「
WSRREndpointLookup」という名前を付けます。
図 50. 「Request (要求)」フローへの「Endpoint Lookup (エンドポイント・ルックアップ)」メディエーション・プリミティブの追加
- 「Request (要求)」フロー内のすべてのメディエーション・プリミティブを、図 51 に示すように接続します。
図 51. 「Request (要求)」フロー内のターミナル間の接続
- メディエーション・フロー・エディターの「Response (応答)」タブをクリックし、「Trace (トレース)」メディエーション・プリミティブを追加して、「TraceResponse」という名前を付けます (図 52 を参照)。
図 52. 「Response (応答)」フローへの「Trace (トレース)」メディエーション・プリミティブの追加
- 「Response (応答)」フロー内のすべてのメディエーション・プリミティブを、図 53 に示すように接続します。
図 53. 「Response (応答)」フロー内のターミナル間の接続
- 「Request (要求)」フローに戻り (メディエーション・フロー・エディターの「Request (要求)」タブをクリック)、「BeforeLookup」を選択して、「Message (メッセージ)」フィールド (「Properties (プロパティー)」ビューの「Details (詳細)」セクション内)」に「
BeforeLookup ---」というプレフィックスを追加します
図 54. 「BeforeLookup」の詳細
- 図 55 に示すように、「AfterLookup」に対しても「BeforeLookup」と同様にステップ 17 を繰り返します。
図 55. 「AfterLookup」の詳細
- 今度は「NoMatchFound」を選択し、「Properties (プロパティー)」ビューの「Details (詳細)」セクションで以下のフィールドを更新します。
- 「Destination (宛先)」ドロップダウン・リストから「File (ファイル)」を選択します。
- 「File path (ファイル・パス)」にファイルの絶対パス (例えば、
C:\temp\dWSampleNoMatchFound.log) を指定します。 - 「Message (メッセージ)」フィールドにプレフィックス 「
NoMatchFound ---」 を追加します。
図 56. 「NoMatchFound」の詳細
- さらに「WSRREndpointLookup」を選択し、「Properties (プロパティー)」ビューの「Details (詳細)」セクションでフィールドの内容を確認します。
図 57. 「WSRREndpointLookup」の詳細
- 「WSRREndpointLookup」を選択したまま、「Properties (プロパティー)」ビューで「Advanced (拡張)」をクリックして、「Add (追加)」をクリックします。
図 58. 「WSRREndpointLookup」の拡張プロパティー
- 図 59 に示す「Add/Edit properties (プロパティーの追加/編集)」ダイアログで、「Name (名前)」フィールドに「
sampleProperty」と入力し、「Value (値)」フィールドに「/body/getServerResponse/input1」と入力した後、「Finish (終了)」をクリックします。
図 59. ユーザー・プロパティーの追加
- 「Properties (プロパティー)」ビューの「Advanced (拡張)」セクションのリストにステップ 22 で追加したユーザー・プロパティーが含まれていることを確認します。
図 60. 追加されたユーザー・プロパティーの確認
- 「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションにある「IntegrationSolution_MediationModule」プロジェクト配下の「Assembly Diagram (アセンブリー・ダイアグラム)」をダブルクリックしてアセンブリー・エディターを起動します。
- アセンブリー・エディターで「SampleMediation」を右クリックして、コンテキスト・メニューから「Generate Export (エクスポートの生成)」 > 「Web Service Binding (Web サービス・バインディング)」の順に選択します。
- 「Select a Transport Protocol (トランスポート・プロトコルの選択)」ダイアログで 「SOAP1.1/HTTP」 を選択し、「Finish (終了)」をクリックしてエクスポートを生成します。
- Web サービス・バインディング・エクスポートが正常に生成されていることを確認します。
図 61. 「SampleMediation」の Web サービス・バインディング・エクスポート
- 「Business Integration (ビジネス・インテグレーション)」ビューの「Projects (プロジェクト)」セクションで、「IntegrationSolution_Library」プロジェクト配下にある「Web Service Ports (Web サービス・ポート)」から「ServiceInterfaceExport1_ServiceInterfaceHttpPort」をダブルクリックします (図 62 を参照)。
- WSDL エディターで「ServiceInterfaceExport1_ServiceInterfaceHttpPort」を選択し、「Address (アドレス)」フィールドに「
http://<ホスト名>:<ポート番号>/IntegrationSolution_MediationModuleWeb/sca/ServiceInterfaceExport1」と入力します (<ホスト名> は、Service Bus がインストールされているマシンの完全修飾ドメイン名です。<ポート番号> の値は、Integrated Solutions Console で「Servers (サーバー)」 > 「Server Types (サーバー・タイプ)」 > 「WebSphere application servers (WebSphere アプリケーション・サーバー)」 > 「[Service Bus アプリケーション・サーバー]」 > 「Ports (ポート)」 > 「WC_defaulthost」の順に選択すると、確認することができます。ここで、[Service Bus アプリケーション・サーバー] は、Service Bus プロファイルのデフォルト・アプリケーション・サーバーです)。
図 62. 「SampleMediation」エクスポートのポート・アドレスの変更
- 「File (ファイル)」 > 「Save All (すべて保存)」の順にクリックして、これまでに行った変更を保存します。
- このプロジェクトにデプロイ可能な成果物をエクスポートするために、「File (ファイル)」 > 「Export (エクスポート)」の順にクリックします。
- この操作によって表示されるダイアログで、「Files for server deployment (サーバー・デプロイメント用ファイル)」を選択し、エクスポートするプロジェクトとして「IntegrationSolution_MediationModule」を選択してから「Next (次へ)」をクリックします。
- 「Export (エクスポート)」ウィザードの最後のダイアログで、「Archive File Name (アーカイブ・ファイル名)」(例えば、
IntegrationSolution_MediationModule.ear) を指定し、「Target directory (ターゲット・ディレクトリー)」でプロジェクトのエクスポート先を選択した後、「Finish (終了)」をクリックしてエクスポートを完了します。
このセクションでは、JAX-WS Web サービス・クライアント・ウィザードによって生成された JSP およびクラスからなる Web アプリケーションの作成手順を説明します。JAX-WS は、JAX-RPC (Java API for XML-based RPC) モデルに基づく Web サービス・プログラミング・モデルであり、比較的プラットフォームにとらわれずに Web サービス・クライアントを定義する方法となります。これから作成する Web アプリケーションを使用して 「SampleMediation」 メディエーション・フローの Web サービス・バインディング・エクスポートを起動することによって、Service Bus と Service Registry との統合を検証します。
- Integration Developer ワークスペースで、「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」の順にクリックします。
- 図 63 に示すダイアログで、「Java EE」フォルダー配下の「Enterprise Application Project (エンタープライズ・アプリケーション・プロジェクト)」を選択し、「Next (次へ)」をクリックします。
図 63. エンタープライズ・アプリケーション・プロジェクトの作成
- 次のダイアログで、「Project name (プロジェクト名)」フィールドに 「
SampleClient」 と入力し、その他の設定はデフォルト値のまま「Next (次へ)」をクリックします。
図 64. エンタープライズ・アプリケーション・プロジェクトのプロパティー
- さらに次のダイアログでは、「New Module (新規モジュール)」をクリックします。
図 65. 従属モジュールの定義
- これによって表示されるダイアログでは、「Web module (Web モジュール)」を選択し、他の設定はデフォルト値のまま「Finish (終了)」をクリックします。
図 66. Web モジュールの作成
- これによって先ほどのダイアログに戻るので、最後に「SampleClientWeb」が選択されていることを確認した上で、「Finish (終了)」をクリックしてウィザードを完了します。
図 67. 追加された Web モジュールの確認
- 「Java EE」パースペクティブに切り替えるかどうかを尋ねるプロンプトが出されたら、「No (いいえ)」をクリックします。
- 再び「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」の順にクリックして、今度は「Web Services (Web サービス)」フォルダー配下の「Web Service Client (Web サービス・クライアント)」を選択します。
- 表示されたダイアログの「Service definition (サービス定義)」フィールドに「
/IntegrationSolution_Library/IntegrationSolution_MediationModule_ServiceInterfaceExport1.wsdl」と入力し、「Server:... (サーバー:…)」リンクをクリックします。
図 68. サービス定義の選択
- 次のダイアログで、「Server (サーバー)」として「WebSphere ESB Server v7.0」を、「Web service runtime (Web サービス・ランタイム)」として「IBM WebSphere JAX-WS」を選択し、「OK」をクリックします。
図 69. Web サービス・ランタイムの選択
- 今度は「Client project:... (クライアント・プロジェクト…)」リンクをクリックします。
図 70. クライアント・プロジェクトの指定
- 次のダイアログでは、クライアント・プロジェクトとして「SampleClientWeb」を選択し、「OK」をクリックします。
- 「Configuration (構成)」の内容が図 71 のようになっていることを確認した上で、「Next (次へ)」をクリックして次に進みます。
図 71. 構成の確認
- ウィザードの最後のダイアログでは、「Generate portable client (移植可能なクライアントの生成)」にチェック・マークを付け、残りの設定はデフォルト値のままにして、「Finish (終了)」をクリックします (「Generate portable client (移植可能なクライアントの生成)」にチェック・マークを付けると、WSDL ファイルのローカル・コピーが <WebModule>/WebContent/WEB-INF/wsdl フォルダーに保存されます)。
図 72. Web サービス・クライアントの構成完了
- 「Window (ウィンドウ)」 > 「Open Perspective (パースペクティブを開く)」 > 「Other (その他)」 > 「Java EE」の順にクリックして、「Java EE」パースペクティブに切り替えます。
- 図 73 に示す Java クラスが「Enterprise Explorer (エンタープライズ・エクスプローラー)」ビューに表示されていることを確認します。
図 73. 「Enterprise Explorer (エンタープライズ・エクスプローラー)」ビューに表示された Java クラス
- Service Bus サーバー構成が Integration Developer ワークスペース内に存在することを確認します。
図 74. サーバー構成
- 「SampleClientWeb」 > 「Java Resources (Java リソース)」 > 「integrationsolution_library.serviceinterface.binding2」へと進んで、「ServiceInterfaceExport1_ServiceInterfaceHttpPortProxy.java」を右クリックし、コンテキスト・メニューから「Web Services (Web サービス)」 > 「Generate JAX-WS JSPs (JAX-WS JSP の生成)」の順に選択します。
- 「Web Service Client Test (Web サービス・クライアントのテスト)」ダイアログで、「Test the generated proxy (生成されたプロキシーをテストする)」にチェック・マークを付け、「Folder (フォルダー)」フィールドに「
form」と入力し、「Run test on server (サーバーでテストを実行する)」のチェック・マークを外します。残りの設定はデフォルトのまま「Finish (終了)」をクリックして、ウィザードを完了します。
図 75. Web サービス・クライアント構成
- 図 76 に示す JSP が「Enterprise Explorer (エンタープライズ・エクスプローラー)」ビューに表示されていることを確認します。
図 76. JAX-WS JSP
- このプロジェクトにデプロイ可能な成果物をエクスポートするために、「File (ファイル)」 > 「Export (エクスポート)」の順にクリックします。
- 表示されたダイアログで、「Java EE」フォルダー配下の「EAR file (EAR ファイル)」を選択し、「Next (次へ)」をクリックします。
- 次のダイアログで、「EAR project (EAR プロジェクト)」として「SampleClient」を選択し、「Destination (宛先)」にプロジェクトのエクスポート先を指定して、残りはデフォルト値のままにします。これで、「Finish (終了)」をクリックすれば、エクスポートが完了します。
Service Bus へのアプリケーションのデプロイメント
次に、Integrated Solutions Console から、エクスポートした統合モジュールと Web プロジェクトを Service Bus ランタイムにデプロイします。すべてのアプリケーションの Web モジュールは、Service Bus アプリケーション・サーバーと IHS の両方にマッピングされます。
http://<ホスト名>:<ポート番号>/ibm/consoleにアクセスして Integrated Solutions Console にログオンします (<ホスト名> は Service Bus がインストールされているマシンの完全修飾ドメイン名、<ポート番号> は Integrated Solutions Console のデフォルト値である 9060 です)。- 「Applications (アプリケーション)」 > 「New Application (新規アプリケーション)」 > 「New Enterprise Application (新規エンタープライズ・アプリケーション)」にナビゲートします。
- 「Local file system (ローカル・ファイルシステム)」から「IntegrationSolution_BackendModule.ear」ファイルを選択し、「Next (次へ)」を選択します。
- 次の画面では、「Fast Path (ファースト・パス)」を選択し、「Next (次へ)」をクリックします。
- さらに次の画面では、デフォルト値を変更せずに、「Next (次へ)」をクリックします。
- 次に、「Cluster and servers (クラスターおよびサーバー)」リストで Service Bus アプリケーション・サーバーと Web サーバーの両方に「IntegrationSolution_BackendModuleWeb」をマッピングし、「Next (次へ)」をクリックします。
図 77. サーバーへのモジュールのマップ
- デプロイメントの要約を確認し、「Finish (終了)」をクリックしてアプリケーションをインストールします。
- インストールが完了したら、「Review (レビュー)」をクリックします。
- 「Synchronize changes with Nodes (ノードで変更を同期する)」を選択し、「Save (保存)」をクリックします。
- 同期が完了したら「OK」をクリックします。
- 「Applications (アプリケーション)」 > 「Application Types (アプリケーション・タイプ)」 > 「WebSphere enterprise applications (WebSphere エンタープライズ・アプリケーション)」にナビゲートし、「IntegrationSolution_BackendModuleApp」を選択して、「Start (開始)」をクリックします。
- ステップ 1 から 11 を繰り返して、以下のアプリケーションをインストールして起動します。
- IntegrationSolution_MediationModule.ear
- SampleClient.ear
この最後のセクションでは、ブラウザーから「SampleClientWeb」Web アプリケーションにアクセスします。このアプリケーションは Web フォームから入力ストリングを受け取ると、Service Registry にそのストリングと一致するものが見つかる場合は、バックエンド・サービスが実行されている Service Bus アプリケーション・サーバー名を返します。Service Registry に一致するものが見つからない場合はヌル値を返します。このテストを実行したら、Service Bus アプリケーション・サーバーの SystemOut.log ファイルを精査し、メッセージが「Trace (トレース)」メディエーション・プリミティブによってログに記録されていることを確認します。
- ブラウザーで
http://<ホスト名>/SampleClientWeb/form/TestClient.jspにアクセスして、Web アプリケーションを起動します (<ホスト名> は IHS がインストールされているマシンの完全修飾ドメイン名です。エンタープライズ・アプリケーションの Web モジュールは IHS にマッピングされているため、ポートは明示的に指定しません)。
図 78. 「SampleClientWeb」Web アプリケーション
- 「Methods (メソッド)」フレームに表示されている「getServerResponse」リンクをクリックして、「input1」フィールドに「10」と入力し (または、「
abc123def」以外の英数字ストリング値を入力し)、「Invoke (起動)」をクリックします。 - 「Results (結果)」フレームに、図 79 に示すように「null」と表示されていることを確認します。
図 79. 一致結果なし
- テキスト・エディターで、C:\temp\dWSampleNoMatchFound.log を開いて、「Trace (トレース)」メディエーション・プリミティブによって記録されたメッセージを確認します。
図 80. dWSampleNoMatchFound.log
- 今度は「input1」フィールドに「
abc123def」と入力して、「Invoke (起動)」をクリックします。 - 「Results (結果)」フレームに、図 81 に示すように「Server response from <Service Bus application server> with input abc123def (入力 abc123def による <Service Bus アプリケーション・サーバー> からの応答)」と表示されていることを確認します (<Service Bus アプリケーション・サーバー> は、Service Bus プロファイルのデフォルト・アプリケーション・サーバーです)。
図 81. サーバーからの応答
- 再び Integrated Solutions Console に切り替えて、「Troubleshooting (トラブルシューティング)」 > 「Logs and trace (ログおよびトレース)」 > 「[Service Bus aアプリケーション・サーバー]」 > 「JVM Logs (JVM ログ)」の順にナビゲートします ([Service Bus アプリケーション・サーバー] は、Service Bus プロファイルのデフォルト・アプリケーション・サーバーです)。
- 「Runtime (ランタイム)」タブをクリックし、「SystemOut.log」の隣に示されている「View (表示)」をクリックします。
- 「Trace (トレース)」メディエーション・プリミティブによって記録された、図 82 のようなメッセージを確認します。
図 82. SystemOut.log
この記事では Integration Developer を使用して、Service Bus と Service Registry との統合方法を示すソリューションを開発する方法を説明しました。サンプル・バックエンド・サービスを作成するところから、作成したサービスを Service Registry にアップロードし、Service Registry に対してルックアップを実行するメディエーション・フローを定義し、JAX-WS Web サービス・クライアントを生成して統合シナリオをテストするまでの一連の手順を学んでいただけたはずです。
この記事をレビューしてくれた、Australia Development Laboratory WebSphere Services チームで一緒に働いている Damien McAullay 氏に感謝の意を表したいと思います。
- WebSphere Service
Registry and Repository V7 インフォメーション・センターで Service Registry の詳細を調べてください。
- WebSphere
Enterprise Service Bus V7 インフォメーション・センターで Service Bus の詳細を調べてください。
- Redbooks「WebSphere Business Process Management V7
Production Toplogies」を参照して、WebSphere Business
Process Management V7 トポロジーの実装方法を学んでください。
- Java API
for XML Web Services についての詳細を読んでください。
