プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Service Busでのサービスの開発
12c (12.2.1.1.0)
E77239-02
目次へ移動
目次

前
次

43 サンプル・ソケット・トランスポート・プロバイダの作成

この章では、サンプル・ソケット・トランスポート・プロバイダをビルドおよび実行する方法について説明します。このサンプルとソース・コードは、Service Busとともにインストールされます。このサンプルは、カスタム・トランスポート・プロバイダの実装例として使用できます。

この章の内容は次のとおりです。

43.1 サンプル・ソケット・トランスポート・プロバイダの設計

サンプル・ソケット・トランスポート・プロバイダの主な目的は、トランスポート・プロバイダの実装例として機能することです。一般に公開されているこのサンプルでは、トランスポートSDKの実装および構成の詳細について説明します。

43.1.1 サンプルによって説明される概念

サンプル・トランスポートは、ストリーミングしたデータをService Busに構成されているTCPソケットとの間で送受信するために設計されています。サンプル・トランスポートでは、トランスポートSDKの次のような概念を示します。

  • カスタム・トランスポートのビルドに必要な、トランスポートSDK APIのセットを実装します。

  • 構成されたアドレスでリスニングするソケット・エンドポイントがないことを確認するなど、トランスポート・エンドポイントの検証を実行します。

  • ソケット・プロパティ、メッセージ・パターンなど、様々なUI構成オプションを実装します。

  • 一方向または同期型のリクエスト/レスポンス・メッセージ・パターンを実装します。

  • エンドポイント・リクエスト/レスポンスのメタデータおよびヘッダーにPOJO (Plain Old Java Object)を使用します。

  • Service Busパイプラインでストリーミングを使用します。

43.1.2 サンプルの基本アーキテクチャ

図43-1に、サンプル・ソケット・トランスポート・プロバイダの基本アーキテクチャを示します。どのクライアントでも、サーバー・ソケットに接続できます。データは、サーバー・ソケットで受信され、パイプラインを介して渡されます。レスポンスは、アウトバウンド・トランスポートを介して戻されます。レスポンスは、最後にインバウンド・トランスポートに返送され、クライアントに戻されます。

図43-1 サンプル・ソケット・トランスポートのアーキテクチャ

図43-1の説明が続きます
「図43-1 サンプル・ソケット・トランスポートのアーキテクチャ」の説明

43.1.3 構成プロパティ

図43-2に、転送エンドポイントの構成のプロパティを示します。これらのプロパティは、スキーマ・ファイルSocketTransport.xsdで構成されています。このファイルの場所は、「サンプルの場所とディレクトリ構造」を参照してください。このファイルを使用すると、SDKの共通のスキーマに定義されている、基本的なプロパティ・セットを拡張できます。各プロパティは、SocketTransport.xsdファイルを参照してください。

ヒント:

これらの構成プロパティの詳細は、「ステップ4. トランスポート固有のアーティファクトの定義」を参照してください。

図43-2 SocketEndpointConfigurationのプロパティ

図43-2の説明が続きます
「図43-2 SocketEndpointConfigurationのプロパティ」の説明

また、図43-3に示すように、SocketTransport.xsdファイルには、リクエスト・ヘッダー、レスポンス・ヘッダーおよびメタデータのプロパティが含まれています。これらのプロパティの詳細は、SocketTransport.xsdファイルを参照してください。

図43-3 リクエスト・ヘッダー、レスポンス・ヘッダーおよびメタデータの構成

図43-3の説明が続きます
「図43-3 リクエスト・ヘッダー、レスポンス・ヘッダーおよびメタデータの構成」の説明

43.2 サンプルの場所とディレクトリ構造

ここでは、サンプル・プロジェクトのいくつかの重要なフォルダについて簡単に説明します。このディレクトリ構造を、カスタム・トランスポート・プロバイダを開発する際のモデルとして使用できます。サンプル・ソケット・トランスポート・プロバイダはService Busにインストールされ、OSB_ORACLE_HOME/samples/servicebus/sample-transportディレクトリにあります。

表43-1に、重要なsample-transportディレクトリを示して、簡単に説明します。

表43-1 サンプル・トランスポート・プロバイダの重要なディレクトリ

ディレクトリ 説明

build

このディレクトリは、サンプル・ソケット・トランスポートをビルドするときに作成されます。Service Busで使用するビルド化およびパッケージ化されたトランスポートを含みます。

l10n

このディレクトリには、これらの国際化ファイルが含まれます。サポートされているロケールそれぞれにそれぞれのファイルがあります。

SocketTransportMessages.xml: Oracle Service Busコンソールに表示されるメッセージのための構成ファイルです。

SocketTransportTextMessages.xml: カスタム・トランスポート・フィールド名およびその説明のための構成ファイルです。

META-INF

このディレクトリには、これらのアプリケーション・デプロイメント・ディスクリプタ・ファイルが含まれます。

application.xml: J2EEアプリケーション記述子ファイル

weblogic-application.xml: WebLogicアプリケーション記述子ファイル

オフライン

このディレクトリには1つのファイルtransport-socket.xmlが含まれます。このファイルは完全修飾クラス名およびそのライブラリJARファイルの名前と場所を指定します。

resources

このディレクトリには、トランスポートSDKによって使用されるソケット・トランスポート・プロバイダの構成ファイルが含まれます。ファイル名はSocketConfig.xmlです。トランスポートのサンプル・ヘルプ・ファイルも含まれます。

スキーマ

このディレクトリには、このトランスポート用に定義された関連スキーマが含まれます(ここではSocketTransport.xsd)。このファイルは、ソケットのエンドポイント・リクエストとエンドポイント・レスポンスのメタデータおよびヘッダーを記述します。

src

このディレクトリには、サンプル・トランスポートのソース・ツリーが含まれます。

test

このディレクトリには、サンプル・トランスポート・プロバイダのテスト・ユーティリティおよびテスト・サーバーおよびクライアントのソース・ツリーが含まれます。

webapp

このディレクトリには、サンプル・トランスポート・ヘルプのWebアプリケーションで必要なデプロイメント記述子が含まれます。

次のAntビルド・ファイルも、sample-transportディレクトリに格納されています。

  • build.properties - Antのプロパティ・ファイルです。

  • build.xml - コンパイル、ビルド、およびデプロイ用の異なる対象を含むAntビルド・ファイルです。

43.3 サンプルのビルドとデプロイ

この項で示す手順を指定の順序で実行して、サンプル・トランスポート・プロバイダをビルドしてデプロイします。

43.3.1 環境の設定方法

Service Busドメインにスクリプトが指定され、サンプルをビルドするための環境を構成します。

環境を設定するには:

  1. 新しいドメインを作成するか、Service Busとともにインストールされている、構成済のドメインの1つを使用します。
  2. 次のスクリプトを実行して、ドメイン環境を設定します。

    DOMAIN_HOME/bin/setDomainEnv.cmd (またはUNIXシステムのsetDomainEnv.sh)

43.3.2 サンプル・トランスポート・プロバイダの構築方法

環境構成を設定すると、sample-transportディレクトリにあるAntビルド・ファイルを使用してトランスポートをビルドできます。

サンプル・トランスポート・プロバイダをビルドするには:

  1. コマンド・ウィンドウで、OSB_ORACLE_HOME/samples/servicebus/sample-transportに移動します。
  2. 次のコマンドを実行します。
    ant build
    

    このコマンドにより、OSB_ORACLE_HOME/samples/servicebus/sample-transport/buildのソース・ファイルがコンパイルされます。

  3. トランスポートが正常にビルドされてから、次のコマンドを実行します。
    ant stage
    

    sock_transport.earおよびsock_transport.jarOSB_ORACLE_HOME/lib/transportsにコピーされ、transport-socket.xmlがOSB_ORACLE_HOME/config/pluginsにコピーされます。

43.3.3 サンプル・トランスポート・プロバイダのデプロイ方法

ソケット・サンプルは、サンプル・トランスポート・プロバイダをWebLogic Serverにデプロイする自動スクリプトも提供します。サンプルが正常にビルドされてステージングされると、デプロイ・コマンドを実行できます。

サンプル・トランスポート・プロバイダをデプロイするには:

  1. 次の変数をsample-transport/build.propertiesに設定します。
    wls.hostname
    
    wls.port
    
    wls.username
    
    wls.password
    
    wls.server.name
    
  2. 次のコマンドを実行して、トランスポート・プロバイダをサーバーにデプロイします。
    ant deploy

43.3.4 サンプル・トランスポート・プロバイダのJDeveloperへの登録

サンプル・ソケット・トランスポート・プロバイダを使用してJDeveloperにプロジェクトを作成またはインポートするには、トランスポート登録ファイルを変更する必要があります。

サンプル・トランスポート・プロバイダをJDeveloperに登録するには:

  1. /MW_HOME/osb/config/pluginsに移動します。
  2. XMLまたはテキスト・エディタでtransport-socket.xmlを開きます。
  3. トランスポート要素で、次の属性を追加します。
    id='socket'
    helpId="contexts_socketTransport"
    

    最終的なファイルは次のようになります。

    <plugin xmlns="http://www.bea.com/alsb/offline/extensions">
     
        <transport
           class="com.bea.alsb.transports.sock.SocketTransportProviderFactory"
           id="socket"
           helpId="contexts_socketTransport"/>
     
        <libraries>
            <library name='lib/transports/sock_transport.jar'/>
        </libraries>
     
    </plugin>
  4. ファイルを保存して閉じます。
  5. JDeveloperを再起動します(実行中の場合)。

43.4 ソケット・トランスポートのサンプル・プロジェクトの作成

サンプルは、テスト・サーバーとテスト・クライアントで構成されています。クライアントは、サーバーにメッセージを送信します。メッセージを受信および処理するために、Service Busを構成します。

この項のタスクを指定の順序で実行します。これらの手順は、Oracle Service Busコンソールでサンプル・プロジェクトを作成するためのものですが、JDeveloperでも作成できます。

43.4.1 プロジェクトの作成

サンプルを作成する最初の手順は、Service Busリソースを含める実際のプロジェクトを作成することです。

プロジェクトを作成するには:

  1. Oracle Service Busコンソールを起動し、新しいセッションを作成するかまたは既存のセッションを編集します。
  2. プロジェクト・ナビゲータで、「すべてのプロジェクト」を右クリックし、「作成」を指し、「プロジェクト」を選択します。
  3. 「新規プロジェクトの作成」ダイアログで、「リソース名」フィールドに「SocketTest」と入力します。
  4. 「作成」をクリックします。

    プロジェクト定義エディタに新しいプロジェクトが表示されます。

43.4.2 ビジネス・サービスの作成

このサンプル・プロジェクトでは、サーバーと通信するビジネス・サービスを作成します。

ビジネス・サービスを作成するには:

  1. プロジェクト・ナビゲータで、SocketTestプロジェクトを右クリックして、「作成」をポイントし、「リソース」を選択します。「ビジネス・サービス」「テクノロジ」をクリックし、次に「ソケット」をクリックします。

    「ビジネス・サービスの作成」ウィザードが表示されます。

    図43-4 「ビジネス・サービスの作成」ウィザード

    図43-4の説明が続きます
    「図43-4 「ビジネス・サービスの作成」ウィザード」の説明
  2. 「リソース名」フィールドに、「SocketBS」と入力します。
  3. 「トランスポート」フィールドで、「ソケット」を選択します。「次」をクリックします。
  4. 「サービス・タイプ」で、「任意のXMLサービス」を選択し、「次」をクリックします。
  5. 「エンドポイントURI」フィールドで、デフォルトのURIをtcp://localhost:7031に変更します。
  6. 「作成」をクリックします。

    ビジネス・サービス定義エディタにビジネス・サービスが表示されます。様々なサブタブをクリックして、構成を表示できます。

  7. 「保存」をクリックします。

43.4.3 プロキシ・サービスの作成

ここでは、クライアントからのメッセージを受け取るプロキシ・サービスを作成します。

プロキシ・サービスを作成するには:

  1. プロジェクト・ナビゲータで、SocketTestプロジェクトを右クリックして、「作成」をポイントし、「リソース」を選択します。「プロキシ・サービス」「テクノロジ」をクリックし、次に「ソケット」をクリックします。

    「プロキシ・サービスの作成」ウィザードが表示されます。

    図43-5 「プロキシ・サービスの作成」ウィザード

    図43-5の説明が続きます
    「図43-5 「プロキシ・サービスの作成」ウィザード」の説明
  2. 「リソース名」フィールドに、「SocketProxy」と入力します。
  3. 「トランスポート」フィールドで、「ソケット」を選択します。「次」をクリックします。
  4. 「サービス・タイプ」で、「任意のXMLサービス」を選択し、「次」をクリックします。
  5. 「エンドポイントURI」フィールドで、デフォルトのURIを7032に変更します。
  6. 「作成」をクリックします。

    プロキシ・サービス定義エディタにプロキシ・サービスが表示されます。様々なサブタブをクリックして、構成を表示できます。

  7. 「保存」をクリックします。

43.4.4 パイプラインの作成

ビジネス・サービスとプロキシ・サービスを定義したので、着信メッセージをビジネス・サービスにルーティングするパイプラインを作成できます。

パイプラインを作成するには:

  1. プロジェクト・ナビゲータで、SocketTestプロジェクトを右クリックして、「作成」をポイントし、「リソース」を選択します。「パイプライン」をクリックし、次に「OK」をクリックします。

    パイプラインの作成ダイアログが表示されます。

  2. 「パイプライン名」フィールドに、「SocketPipeline」と入力します。
  3. 「サービス・タイプ」で、「任意のXMLサービス」を選択します。
  4. プロキシ・サービスとして公開を選択解除します。

    図43-6 パイプラインの作成ダイアログ

    図43-6の説明が続きます
    「図43-6 パイプラインの作成ダイアログ」の説明
  5. 「作成」をクリックします。

    パイプライン定義エディタにパイプラインが表示されます。様々なサブタブをクリックして、構成を表示できます。

  6. エディタの右上にある「メッセージ・フローを開く」アイコンをクリックします。

    「メッセージ・フローの編集」ウィンドウが表示されます。

  7. **INTERNAL XREF ERROR**に示すとおり、SocketPipelineアイコンをクリックし、メニューから「ルートの追加」を選択します。

    図43-8 メッセージ・フローの編集

    図43-8の説明が続きます
    「図43-8 メッセージ・フローの編集」の説明
  8. RouteNode1アイコンをクリックし、「ルートの編集」を選択します。
  9. **INTERNAL XREF ERROR**に示すとおり、「ステージ構成の編集」ウィンドウで「アクションの追加」をクリックし、「通信」「ルーティング」を選択します。

    図43-9 アクションの追加

    図43-9の説明が続きます
    「図43-9 アクションの追加」の説明
  10. 「ルーティング先」の横の、<Service>を選択します。
  11. 「サービスの選択」ウィンドウで、リストからSocketBSを選択し、「発行」をクリックします。
  12. 「ステージ構成の編集」ウィンドウで「保存」をクリックします。
  13. 必要に応じて、RouteNode1アイコンをクリックし、名前をSocketBSに変更して、「保存」をクリックします。
  14. 「保存」を再度クリックします。

    パイプライン定義エディタに戻ります。

43.4.5 プロキシ・サービスとパイプラインの接続

ここでは、プロキシ・サービスを構成して、作成したパイプラインにメッセージを送信します。

プロキシ・サービスとパイプラインを接続するには:

  1. プロジェクト・ナビゲータで、SocketProxyプロキシ・サービスをクリックします。

    プロキシ・サービス定義エディタが表示されます。

  2. 「構成」タブの「全般」サブタブで、ターゲットの「名前」フィールドの横にある「サービス・リソースの選択」をクリックします。
  3. 「検索と選択」ダイアログで、「名前」フィールドに「SocketPipeline」と入力し、「検索」をクリックします。
  4. 結果リストのパイプラインを選択し、「OK」をクリックします。
  5. 「保存」をクリックします。
  6. 「アクティブ化」をクリックし、新しいリソースをWebLogic Serverにデプロイします。

43.5 ソケット・トランスポート・プロバイダのテスト

サンプル・ファイルが提供するクライアント・ツールおよびサーバー・ツールを使用して、ソケット・トランスポート・プロバイダをテストできます。また、Oracle Service Busコンソールのテスト・コンソールを使用して、プロジェクト・コンポーネントをテストできます。

43.5.1 テストするためのサンプルのサーバーとクライアントの使用

サンプル・プロジェクトには、ソケット・トランスポート・プロバイダをテストするための簡単なソケット・サーバーおよびクライアントが含まれています。まず、サンプルのサーバーおよびクライアントを起動する必要があります。次に、テスト・コンソールを操作して、トランスポート・プロバイダをテストできます。

43.5.1.1 サンプルの外部サービスの起動

次のコマンドをsample-transportディレクトリから実行してテスト・サーバーを起動します。これは、指定したポートでリスンしてメッセージを送受信するサーバー・ソケットです。

java -classpath .\test\build\test-client.jar -Dfile-encoding=utf-8
-Drequest-encoding=utf-8 com.bea.alsb.transports.sample.test.TestServer 7031
<message-file-location>

7031は、ServerSocketがリスニングしているビジネス・サービスのエンドポイントURIのポート番号です。ファイルおよびリクエスト・エンコーディングは、リクエストおよびレスポンスのエンコーディングを指定します。message-file-locationは、ビジネス・サービスへのレスポンスとして送信するメッセージ・ファイルのパスおよび名前です。

サーバーが正常に起動すると、サーバーが起動したことおよびソケットをリスニングしていることを示すメッセージが表示されます。処理するファイルを指定すると、コマンド・ウィンドウにファイルのテキストが表示されます。

43.5.1.2 サンプルの初期化サービスの起動

次のコマンドを実行して、構成済のソケット・プロキシ・サービスのクライアントである、初期化ソケット・サービスを起動します。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は、Service Busサーバーがあるホスト名です。

  • portは、プロキシ・サービスがリスニングしているポート番号です(この例では7032)。

  • thread-ctは、Service Busにメッセージを送信できるクライアントの数です。

  • message-file-location (オプション)は、ビジネス・サービスへのレスポンスとして送信されるメッセージ・ファイルの場所です。

  • file-encodingは、ファイルのエンコーディングを指定するオプション引数です。デフォルト値はutf-8です。

  • response-encodingは、ソケット・プロキシ・サービスから受信したレスポンスのエンコーディングです。デフォルト値はutf-8です。

43.5.2 テスト・コンソールの使用

ここでは、Oracle Service Busコンソールを使用してトランスポート・プロバイダをテストします。

テスト・コンソールを使用してテストするには:

  1. 「サンプルの外部サービスの起動」で以前説明したように、テスト・サーバーを起動します。
  2. プロジェクト・ナビゲータで、SocketPipelineをクリックし、パイプライン定義エディタでこれを開きます。
  3. エディタの右上にある「テスト・コンソールの起動」アイコンをクリックします。

    新しいブラウザ・ウィンドウにテスト・コンソールが表示されます。

  4. テスト・コンソールで、テキスト領域に有効なXMLスタンザを入力するか、「参照」ボタンを使用して、ローカル・システムの有効なXMLファイルを選択します。

    図43-10 テスト・コンソールでのサンプル・トランスポート・プロバイダのテスト

    図43-10の説明が続きます
    「図43-10 テスト・コンソールでのサンプル・トランスポート・プロバイダのテスト」の説明
  5. 「実行」をクリックします。テストが正常に終了すると、図43-11に示すような情報がテスト・コンソールに表示されます。また、テスト・コンソールにXMLテキストを入力すると、サーバー・コンソールにエコーされます。

    図43-11 成功したサンプル・トランスポート・プロバイダのテスト

    図43-11の説明が続きます
    「図43-11 成功したサンプル・トランスポート・プロバイダのテスト」の説明
  6. テスト・コンソールを閉じます。