この章では、サンプル・ソケット・トランスポート・プロバイダをビルドおよび実行する方法について説明します。このサンプルとソース・コードは、Oracle Service Busとともにインストールされます。このサンプルは、カスタム・トランスポート・プロバイダの実装例として使用できます。
この章の内容は次のとおりです。
サンプル・ソケット・トランスポート・プロバイダの主な目的は、トランスポート・プロバイダの実装例として機能することです。一般に公開されているこのサンプルでは、トランスポートSDKの実装および構成の詳細について説明します。
この項の内容は次のとおりです。
サンプル・トランスポートは、ストリーミングしたデータをOracle Service Busに構成されているTCPソケットとの間で送受信するために設計されています。サンプル・トランスポートの目的は、トランスポートSDKの次のような概念を示すことにあります。
カスタム・トランスポートのビルドに必要な、トランスポートSDK APIのセットを実装します。
構成されたアドレスでリスニングするソケット・エンドポイントがないことを確認するなど、トランスポート・エンドポイントの検証を実行します。
ソケット・プロパティ、メッセージ・パターンなど、様々なUI構成オプションを実装します。
一方向または同期型のリクエスト/レスポンス・メッセージ・パターンを実装します。
エンドポイント・リクエスト/レスポンスのメタデータおよびヘッダーにPOJO (Plain Old Java Object)を使用します。
Oracle Service Busパイプラインでのストリーミングの使用方法を示します。
図42-1に、サンプル・ソケット・トランスポート・プロバイダの基本アーキテクチャを示します。どのクライアントでも、サーバー・ソケットに接続できます。データは、サーバー・ソケットで受信され、パイプラインを介して渡されます。レスポンスは、アウトバウンド・トランスポートを介して戻されます。レスポンスは、最後にインバウンド・トランスポートに返送され、クライアントに戻されます。
図42-2に、トランスポート・エンドポイントの構成のプロパティを示します。これらのプロパティは、スキーマ・ファイルSocketTransport.xsd
で構成されています。このファイルの場所の詳細は、42.2項「サンプルの場所とディレクトリ構造」を参照してください。このファイルを使用すると、SDKの共通のスキーマに定義されている、基本的なプロパティ・セットを拡張できます。各プロパティは、SocketTransport.xsd
ファイルを参照してください。
また、図42-3に示すように、SocketTransport.xsd
ファイルには、リクエスト/レスポンス・ヘッダーおよびメタデータのプロパティが含まれています。各プロパティの詳細は、SocketTransport.xsd
ファイルを参照してください。
サンプル・ソケット・トランスポート・プロバイダはOracle Service Busにインストールされ、OSB_ORACLE_HOME/samples/servicebus/sample-transportディレクトリにあります。
ここでは、サンプル・プロジェクトのいくつかの重要なフォルダについて簡単に説明します。このディレクトリ構造を、カスタム・トランスポート・プロバイダを開発する際のモデルとして使用できます。
表42-1に、重要なサンプル・トランスポート・ディレクトリを示して、簡単に説明します。
表42-1 サンプル・トランスポート・プロバイダの重要なディレクトリ
ディレクトリ | 説明 |
---|---|
build |
サンプル・ソケット・トランスポートをビルドするときに作成されます。Oracle Service Busで使用するビルド化およびパッケージ化されたトランスポートを含みます。 |
eclipse |
Eclipse環境にサンプル・トランスポートを追加するために必要なplugin.xmlファイルを含みます。 |
l10n |
国際化のための次のファイルを含みます。
|
META-INF |
次のアプリケーション・デプロイメント記述子ファイルを含みます。
|
resources |
トランスポートのサンプル・ヘルプ・ファイル。 |
schemas |
このトランスポート用に定義されている、次の関連スキーマを含みます。
|
src |
サンプル・トランスポートのソース・ツリー |
test |
(非表示)次のテスト・ファイルのディレクトリ。 src - テスト・サーバーとクライアントのソース・ツリー |
webapp |
サンプル・トランスポート・ヘルプWebアプリケーションで必要なデプロイメント記述子を含みます。 |
次のAntビルド・ファイルも、sample-transport
ディレクトリに格納されています。
build.properties
- Antのプロパティ・ファイルです。
build.xml
- コンパイル、ビルド、およびデプロイ用の異なる対象を含むAntビルド・ファイルです。
この章では、サンプル・トランスポート・プロバイダをビルドおよびデプロイする方法について説明します。
次の手順を実行して、サンプルをビルドするための環境を設定します。
新しいドメインを作成するか、Oracle Service Busと共にインストールされている、構成済のドメインの1つを使用します。
次のスクリプトを実行して、ドメイン環境を設定します。
DOMAIN_HOME/bin/setDomainEnv.cmd (UNIXシステムではsetDomainEnv.sh)
ソケット・トランスポートをビルドするには:
コマンド・ウィンドウで、次のサンプル・ホーム・ディレクトリに移動します。
OSB_ORACLE_HOME/samples/servicebus/sample-transport
コマンドant build
を実行します。このコマンドにより、OSB_ORACLE_HOME/samples/servicebus/sample-transport/buildのソース・ファイルがコンパイルされます。
ビルドが正常に終了したら、コマンドant stage
を実行します。このコマンドでは次の処理が行われます。
sock_transport.ear sock_transport.jarがOSB_ORACLE_HOME/lib/transportsにコピーされます。
OSB_ORACLE_HOME/eclipse/plugins com.bea.alsb.transports.socket_versionが作成され、ソケット・サンプルがプラグインとしてEclipseに登録されます。
サンプル・プロジェクトには、簡単なソケット・サーバーと、サーバーをテストするためのクライアントが含まれています。このソケット・サーバーを使用して、ソケット・トランスポート・プロバイダをテストします。
この項の内容は次のとおりです。
次のコマンドを実行して、指定したポートでリスニングしてメッセージを送受信するサーバー・ソケットである、外部サービスを起動します。
java -classpath .\test\build\test-client.jar -Dfile-encoding=utf-8 -Drequest-encoding=utf-8 com.bea.alsb.transports.sample.test.TestServer <port> <message-file-location>
説明:
port
- ServerSocketがリスニングするポート番号であり、ビジネス・サービスのポート番号です。
message-file-location
- (オプション)ビジネス・サービスへのレスポンスとして送信されるメッセージ・ファイルの場所です。
file-encoding
- ファイルのエンコーディングを指定するシステム・プロパティです(デフォルト値はutf-8)。
request-encoding
- ソケット・ビジネス・サービスが送信する、リクエストのエンコーディングです(デフォルト値はutf-8)。
次のコマンドを実行して、構成済のソケット・プロキシ・サービスのクライアントである、サービスを起動します。Oracle Service Busに対してメッセージを送信し、レスポンスを受信します。
java -classpath .\test\build\test-client.jar -Dfile-encoding=utf-8 -Dresponse-encoding=utf-8 com.bea.alsb.transports.sample.test.TestClient <host-name> <port> <thread-ct> <message-file-location>
説明:
host-name
- Oracle Service Busサーバーのホスト名です。
port
- プロキシ・サービスがリスニングするポート番号です。
thread-ct
- Oracle Service Busにメッセージを送信できるクライアントの数です。
message-file-location
- (オプション)ビジネス・サービスへのレスポンスとして送信されるメッセージ・ファイルの場所です。
file-encoding
- ファイルのエンコーディングを指定するオプション引数です(デフォルト値はutf-8
)。
response-encoding
- ソケット・プロキシ・サービスから受信したレスポンスのエンコーディングです(デフォルト値はutf-8
)。
サンプルは、テスト・サーバーとテスト・クライアントで構成されています。クライアントは、サーバーにメッセージを送信します。メッセージを受信および処理するために、Oracle Service Busを構成します。
この項では、次のタスクについて説明します。
新しいプロジェクトを作成するには:
Oracle Service Bus管理コンソールを起動します。
「プロジェクト・エクスプローラ」を開きます。
チェンジ・センターで「編集」をクリックします。
「プロジェクト」パネルで、「新しいプロジェクト名の入力」フィールドにSocketTest
と入力します。
「プロジェクトの追加」をクリックします。プロジェクト表に、新しいプロジェクトが表示されます。
サーバーと通信するために、ビジネス・サービスを作成します。
プロジェクト表の「SocketTest」プロジェクト名をクリックします。「SocketTest」パネルが表示されます。
サービスの作成メニューで「ビジネス・サービス」を選択します。「全般的な構成」パネルが表示されます。
「全般的な構成」パネルで、「サービス名」フィールドにSocketBS
と入力します。
「サービス・タイプ」リストで「任意のXMLサービス」が選択されていることを確認し、「次へ」をクリックします。
図39-1に示すように、「プロトコル」メニューでsocketを選択します。
「エンドポイントURI」フィールドにtcp://localhost:7031
と入力し、「追加」をクリックします。
「次へ」をクリックします。
次のパネルで、「次へ」をクリックしてデフォルトを受け入れます。
「サマリー」パネルを確認してから「保存」をクリックします。
チェンジ・センターで「アクティブ化」をクリックします。
この項では、プロキシ・サービスを作成します。
「リソースの作成」メニューで「プロキシ・サービス」を選択します。
「全般的な構成」パネルで、「サービス名」フィールドにSocketProxy
と入力します。
「サービス・タイプ」リストで「任意のXMLサービス」が選択されていることを確認し、「次へ」をクリックします。
「プロトコル」メニューでsocketを選択します。
「エンドポイントURI」フィールドにtcp://7032
と入力し、「次へ」をクリックします。
次のパネルでデフォルトを受け入れて、「次へ」をクリックします。
「サマリー」パネルを確認してから「保存」をクリックします。
チェンジ・センターで「アクティブ化」をクリックします。
「発行」をクリックします。
ビジネス・サービスとプロキシ・サービスを定義したので、着信メッセージをビジネス・サービスにルーティングできるように、パイプラインを編集します。
パイプラインを編集するには:
チェンジ・センターで「作成」をクリックします。
図42-4に示すように、「リソース」セクションの「SocketProxy」行で「メッセージ・フローの表示」アイコンをクリックします。
図42-5に示すように、メッセージ・フローの編集ウィンドウで「SocketProxy」アイコンをクリックし、メニューから「ルートの追加」を選択します。
RouteNode1アイコンをクリックし、メニューから「ルートの編集」を選択します。
ステージ構成の編集ウィンドウで「アクションの追加」をクリックします。
図42-6に示すように、「ルート・ノード」ウィンドウで「アクションの追加」をクリックし、メニューから「通信」→「ルーティング」を選択します。
次のパネルで「<サービス>」を選択します。
「サービスの選択」ウィンドウで、リストからSocketBSを選択し、「発行」をクリックします。
「ステージ構成の編集」ウィンドウで「保存」をクリックします。
必要に応じて、RouteNode1アイコンをクリックし、名前をSocketBSに変更します。
「保存」をクリックします。
チェンジ・センターで「アクティブ化」をクリックし、「発行」をクリックします。
この項では、Oracle Service Bus管理コンソールを使用してトランスポート・プロバイダをテストします。
42.4.1項「ソケット・サーバーの起動」で説明したように、テスト・サーバーを起動します。
プロジェクト・エクスプローラで「SocketTest」をクリックします。
図42-7に示すように、「リソース」表の「SocketProxy」行で「テスト・コンソールの起動」アイコンをクリックします。
テスト・コンソールで、テキスト領域に有効なXMLスタンザを入力するか、「参照」ボタンを使用して、ローカル・システムの有効なXMLファイルを選択します。たとえば、図42-8では、テキスト領域に簡単なXML式<x/>
を入力しています。
「実行」をクリックします。テストが正常に終了すると、図42-9に示すような情報がテスト・コンソールに表示されます。また、テスト・コンソールにXMLテキストを入力すると、サーバー・コンソールにエコーされます。
テスト・コンソールを閉じます。