ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Bus開発者ガイド
11gリリース1 (11.1.1.7)
B61435-07
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

43 トランスポート・プロバイダのデプロイ

この章では、Oracle Service Busで使用するためにカスタム・トランスポート・プロバイダをパッケージ化してデプロイする方法について説明します。

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

43.1 トランスポート・プロバイダのパッケージ化

カスタム・トランスポート・プロバイダを、完全に独立したEARファイルとしてパッケージ化する必要があります。そうすることにより、Oracle Service Bus Kernel EARおよびその他のOracle Service Bus関連のアプリケーションと共にデプロイできます。


ヒント:

サンプル・ソケット・トランスポート・プロバイダの例では、トランスポート・プロバイダを構成およびデプロイする方法を示しています。詳細は、第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。


各トランスポート・プロバイダは、次の2つの異なる部分で構成されます。

43.2 トランスポート・プロバイダのデプロイ

この項では、トランスポート・プロバイダをデプロイする方法について説明します。


ヒント:

Oracle Service Busへのアプリケーションのデプロイの詳細は、『Oracle Fusion Middleware Oracle Service Busデプロイメント・ガイド』を参照してください。


トランスポート・プロバイダのデプロイ可能なEARファイルを作成したら、Oracle Service Busドメインにデプロイする必要があります。EARは、次のいずれかの方法でデプロイすることができます。

例43-1 アプリケーション・デプロイメント・エントリ

<app-deployment>
    <name>My Transport Provider</name>
    <target>AdminServer, myCluster</target>
    <module-type>ear</module-type>
    <source-path>$USER_INSTALL_DIR$/servicebus/lib/mytransport.ear</source-path>
    <deployment-order>1234</deployment-order>
</app-deployment>

注意:

トランスポート・プロバイダのEARファイルのデプロイ順序は、トランスポート・プロバイダの前にすべてのOracle Service Bus Kernel EARがデプロイされるようにする必要があります。


43.2.1 トランスポートの登録

サーバーの再起動時に、デプロイしたトランスポートがすぐにサービス・リクエストの処理を開始できるようにすることが可能です。トランスポートをすぐに使用できるようにするには、weblogic.application.ApplicationLifecycleListenerクラスを拡張し、preStart()メソッドを使用して、TransportManager.registerProvider()によってトランスポートを登録します。

サンプル・ソケット・トランスポートには、参考として使用できるApplicationListenerクラスが含まれています。これは、OSB_ORACLE_HOME/samples/servicebus/socket-transport/src/com/bea/alsb/transports/sockにあります。

ApplicationLifecycleListenerを拡張する際は、必ず拡張クラスをMETA-INF/weblogic-application.xmlに登録してください。サンプル・ソケット・トランスポートは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/META-INF/weblogic-application.xmlで、次のApplicationListenerクラスのエントリを提供しています。

<weblogic-application>
  <listener>
    <!-- This class gives callbacks for the deployment lifecycle and socket
    transport is registered with ALSB whenever the application is started.
    -->
    <listener-class>com.bea.alsb.transports.sock.ApplicationListener
    </listener-class>
  </listener>
</weblogic-application>

43.3 トランスポート・プロバイダのアンデプロイ

Oracle Service Busに登録されたトランスポート・プロバイダのアンデプロイメントまたは登録取消しはサポートされません。

43.4 クラスタへのデプロイ

トランスポート・プロバイダは、Oracle Service Busがデプロイされているすべてのサーバーとクラスタにデプロイする必要があります。つまり、Oracle Service Busが管理サーバーのみにデプロイされている場合(管理サーバーには常にデプロイされる)、トランスポート・プロバイダを管理サーバーにデプロイする必要があります。Oracle Service Busが管理サーバーと管理対象サーバーのトポロジにデプロイされている場合は、トランスポート・プロバイダを管理サーバーと特定の管理対象サーバーにデプロイする必要があります。さらに、Oracle Service Busがクラスタにデプロイされている場合は、トランスポート・プロバイダを管理サーバーとクラスタにデプロイする必要があります。Oracle Service Busは、ドメインのトポロジに関係なく必ず管理サーバーにデプロイされます。

トランスポート・プロバイダのEARファイルにあるアプリケーション・コードは、トランスポートがどこにデプロイされているか(管理サーバーまたは管理対象サーバー)を動的に認識して、管理サーバーでは構成動作、管理対象サーバーでは実行時の動作のみを行う必要があります。

たとえば、some_transport.ear内の初期化疑似コードで、次のロジックを使用し、プロバイダの構成部分またはランタイム部分をアクティブにするかどうかを決定できます。

protected SomeTransportProvider() throws TransportException {
    . . . some other initialization code . . .
    if (!isRuntimeEnabled)
        _engine = new RuntimeEngine(. . .);
}

この場合、RuntimeEngineクラスのインスタンスの作成は実行時の動作であるため、マルチサーバー・ドメインでは管理対象ノードのみ、シングル・サーバー・ドメインでは管理ノードでのみ実行される必要があります。

さらに、すでに説明したように、クラスタ環境では、TransportProvider.createEndPoint()およびdeleteEndPoint()は、クラスタ内の管理対象サーバーだけでなく管理サーバー上でも呼び出されます(WLS HTTPルーター/フロントエンド・ホストを除く)。一部のトランスポート・プロバイダは、指定された構成(HTTPなど)を持つエンドポイントが存在するという事実の登録以外は何もしないことを選択できます。通常、トランスポート・プロバイダは、createEndPoint()またはdeleteEndPoint()が管理サーバーと管理対象サーバーのどちらで呼び出されたかを確認して適切な動作を決定する必要があります。