ヘッダーをスキップ
Oracle® Complex Event Processing開発者ガイド
11g リリース1 (11.1.1.4.0) for Eclipse
B61654-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成

この節では、次の項目について説明します。

8.1 HTTPパブリッシュ・サブスクライブ・サーバー・アダプタ構成の概要

HTTPパブリッシュ・サブスクライブ・サーバー(pub-subサーバー)は、ブラウザ・ベースのクライアントなどのWebクライアントが、すべてHTTP上での非同期メッセージを使用して、チャネルにサブスクライブし、利用可能なメッセージを受信し、これらのチャネルにメッセージをパブリッシュするためのメカニズムです。チャネルはJMSトピックと同じです。

Oracle CEPの各インスタンスには、アプリケーションにHTTPパブリッシュ/サブスクライブ機能を実装するためにプログラマが使用できるpub-subサーバーが含まれています。pub-subサーバーは、JettyやJDBCデータ・ソースなどの他のサーバー・サービスと共にconfig.xmlファイルで構成されます。pub-subサーバーはcometdプロジェクト(http://cometd.com/を参照)で提案されているBayeuxプロトコルに基づいています(http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.htmlを参照)。Bayeuxプロトコルには、クライアントとサーバーがHTTPを介して非同期メッセージで通信するための規約が定義されています。

Oracle CEPでは、プログラマは次の組込みHTTPパブリッシュ・サブスクライブ・アダプタを使用してHTTPパブリッシュ/サブスクライブ機能にアクセスします(pub-subアダプタ)。

CEPでは、組込みのpub-subアダプタの機能が不十分な場合にチャネルへのパブリッシュおよびサブスクライブのための独自のカスタムpub-subアダプタを作成するプログラマ向けのpub-sub APIも提供されます。たとえば、サブスクライブしたチャネルからの着信メッセージをフィルタ処理する場合や、ローカル・チャネルを動的に作成または破棄する場合などがあります。組込みのpub-subアダプタではこれらの機能が提供されないため、このような場合にプログラマは独自のカスタムpub-subアダプタを実装する必要があります。詳細は、第14章「カスタム・アダプタの構成」を参照してください。

デフォルトでは、Oracle CEPではOracle CEPイベントの範囲で自動的に変換が実行されます。かわりに、カスタム・コンバータも作成できます。8.3項「HTTP Pub-Subメッセージとイベント・タイプの間でのカスタム・コンバータの作成」を参照してください。

Oracle CEPでは、JSONメッセージとOracle CEPイベント・タイプ間の自動変換も可能です。8.1.3項「JSONメッセージとイベント・タイプの間の変換」を参照してください。

組込みpub-subアダプタは他のどのアダプタとも同様に動作します。つまり、イベント処理ネットワークのステージであり、EPNアセンブリ・ファイルで定義され、標準のコンポーネント構成ファイルで構成されます。通常の構成オプションには、チャネルの指定、ローカルまたはリモートのpub-subサーバーの指定、およびユーザー認証などがあります。

pub-subサーバーはBayeuxプロトコルを理解するすべてのクライアントと通信することができます。プログラマは、次のフレームワークのいずれかを使用してWebクライアントを開発します。

HTTP pub-subサーバー・チャネルの確保の詳細は、『Oracle Complex Event Processing管理者ガイド』のHTTPパブリッシュ・サブスクライブ・サーバー・チャネル・セキュリティに関する項を参照してください。

8.1.1 パブリッシュ用の組込みPub-Subアダプタの概要

組込みのpub-subアダプタを使用してチャネルにイベントをパブリッシュできます。組込みのpub-subアダプタでは、次のパブリッシュ・モードがサポートされています。

詳細は、8.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。

8.1.1.1 ローカル・パブリッシュ

図8-1に、ローカル・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のアダプタおよびプロセッサは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。

図8-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ

図8-1の説明が続きます
「図8-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ」の説明

図8-1では、次の点に注意してください。

  • あるソースからのイベントが、Oracle CEPで実行中のアプリケーションのアダプタに到着します。このアダプタは必須ではなく、単に例として示されています。

  • アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。

  • プロセッサからローカル・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アプリケーションがデプロイされているOracle CEPインスタンスに構成されているローカルのHTTP pub-subサーバーにイベントが送信されます。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。

  • Oracle CEPに構成されているローカルHTTP pub-subサーバーによって、ローカル・チャネルのすべてのサブスクライバにイベントがメッセージとして送信されます。

8.1.1.2 リモート・パブリッシュ

図8-2に、リモート・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。

図8-2 リモート・パブリッシュ用の組込みPub-Subアダプタ

図8-2の説明が続きます
「図8-2 リモート・パブリッシュ用の組込みPub-Subアダプタ」の説明

図8-2では、次の点に注意してください。

  • あるソースからのイベントが、Oracle CEPで実行中のアプリケーションのアダプタに到着します。任意のアダプタは必須ではなく、単に例として示されています。

  • アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。

  • プロセッサからリモート・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アダプタが構成されているリモートHTTP pub-subサーバーにイベントがメッセージとして送信されます。このHTTP pub-subサーバーは別のOracle CEPインスタンス、WebLogic Serverインスタンス、または任意の他のサード・パーティ実装です。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。

  • リモートHTTP pub-subサーバーによって、チャネルのすべてのサブスクライバにメッセージが送信されます。

8.1.2 サブスクライブ用の組込みPub-Subアダプタの概要

図8-3に、サブスクライブ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のプロセッサおよびビジネスPOJOは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。

図8-3 サブスクライブ用の組込みPub-Subアダプタ

図8-3の説明が続きます
「図8-3 サブスクライブ用の組込みPub-Subアダプタ」の説明

図8-3では、次の点に注意してください。

  • メッセージがリモートHTTP pub-subサーバーにパブリッシュされます。これは、Oracle CEPの別のインスタンス、WebLogic Server、またはサード・パーティ実装です。メッセージは通常、図に示されるようなWebベースのクライアント、HTTP pub-subサーバー自身、または別のサーバー・アプリケーションによってパブリッシュされます。

  • Oracle CEPアプリケーションで実行中の組込みpub-subアダプタはHTTP pub-subサーバーをサブスクライブし、指定されたチャネルからのメッセージを受信します。アダプタでは、アダプタに構成されているイベント・タイプにメッセージが変換されます。

  • pub-subアダプタからプロセッサにイベントが送信されます。このプロセッサは必須ではなく、単に一般的なOracle CEPアプリケーションの例として示されています。

  • プロセッサはビジネスPOJOにイベントを送信します。ここでも、このビジネスPOJOは必須ではありません。

詳細は、8.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。

8.1.3 JSONメッセージとイベント・タイプの間の変換

Oracle CEPでは受信JSON (JavaScript Object Notation)メッセージからイベント・タイプへの変換、およびアウトバウンドの場合はその逆の変換を自動的に実行できます。ただし、JSONメッセージ(サブスクライブでのHTTP pub-subアダプタ経由のインバウンド、またはパブリッシュでのHTTP pub-subアダプタ経由のアウトバウンド)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。詳細は、8.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。

独自のコンバータ・クラスを指定せずに、メッセージとイベント・タイプの間の変換処理がOracle CEPによって実行されるようにする場合は、次のことが当てはまります。

  • Oracle CEPの変換で使用されるイベント・タイプを指定する必要があります。詳細は、8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を参照してください。

  • サブスクライブ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各着信メッセージについて指定されたタイプの新しいイベントが作成されます。指定されたイベント・タイプの各プロパティについて、メッセージを構成するJSONオブジェクトの対応するプロパティ名が参照され、見つかった場合は対応する値が設定されます。

  • パブリッシュ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各イベントについてJSONメッセージが作成されます。指定されたイベント・タイプの各プロパティについて、出力JSONメッセージの対応する要素が作成されます。

詳細は、http://www.json.org/を参照してください。

8.2 HTTP Pub-Subアダプタの構成

この項では、パブリッシュ用とサブスクライブ用の両方のOracle CEP HTTP Pub-Subアダプタを構成する方法について説明します。


注意:

この項では、Oracle CEPアプリケーションがEPNアセンブリ・ファイルとコンポーネント構成ファイルを使用してすでに作成済であり、組込みのpub-subアダプタを使用するようにアプリケーションを更新する必要があると想定しています。まだOracle CEPアプリケーションを作成していない場合は、Oracle CEPアプリケーションの作成の概要について、第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

8.2.1 Oracle CEP IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法

HTTP Pub-Subアダプタを作成および構成する最も簡単な方法は、Oracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。

詳細は、6.4.1.2項「アダプタ・ノードの作成方法」を参照してください。

このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を確認して構成を完了します。

8.2.2 HTTP Pub-Subアダプタを手動で構成する方法

この項では、HTTP Pub-Subアダプタを手動で作成および構成する方法について説明します。ご使用のアプリケーションに応じて必要とされる詳細な手順を説明します。

8.2.1項「Oracle CEP IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法」で説明しているとおり、HTTP Pub-Subアダプタを作成および構成する最も簡単な方法はOracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

組込みpub-subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。これらの構成ファイルの概要は、1.1.5項「コンポーネント構成ファイル」を参照してください。

次の手順では、アプリケーションの組込みpub-subアダプタを構成するための主な手順を示します。簡略化のため、この手順ではアプリケーションのすべてのコンポーネントが1つの構成XMLファイルに構成され、アプリケーションのこのファイルがすでに作成されていると想定します。

組込みpub-subアダプタの構成が記述された完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

HTTP Pub-Subアダプタを手動で構成するには:

  1. 任意のXMLエディタを使用して構成XMLファイルを開きます。

  2. 構成する必要のある各組込みpub-subアダプタについて、configルート要素のhttp-pub-sub-adapter子要素を追加します。<name>子要素を使用して一意に識別します。このname値は、後で、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルにあるwlevs:adapterタグのid属性として使用します。このように指定することで、Oracle CEPでは、このアダプタ構成が適用されるEPNアセンブリ・ファイル内の特定のアダプタを認識できます。

    たとえば、構成ファイルにはすでにプロセッサが含まれており(簡略化のため内容は省略します)、3つの組込みpub-subアダプタの各インスタンスを構成する必要があると想定します。更新されたファイルは、次のようになります。アダプタの構成の詳細は、後述します。

    <?xml version="1.0" encoding="UTF-8"?>
    <n1:config
     xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd" 
     xmlns:n1="http://www.bea.com/ns/wlevs/config/application" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <processor>
          ...
        </processor>
        <http-pub-sub-adapter>
            <name>remotePublisher</name>
            ...
        </http-pub-sub-adapter>
        <http-pub-sub-adapter>
            <name>remoteSubscriber</name>
            ...
        </http-pub-sub-adapter>
        <http-pub-sub-adapter>
            <name>localPublisher</name>
            ...
        </http-pub-sub-adapter>
    </n1:config>
    
  3. (パブリッシュおよびサブスクライブ用の)各リモートpub-subアダプタについて、http-pub-sub-adapterserver-url子要素を追加して、Oracle CEPアプリケーションでパブリッシュまたはサブスクライブされるremoteHTTP pub-subサーバーのURLをそれぞれ指定します。リモートpub-subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP pub-subサーバーを指定できます。例:

    <http-pub-sub-adapter>
        <name>remotePublisher</name>
            <server-url>http://myhost.com:9102/pubsub</server-url>
            ...
    </http-pub-sub-adapter>
    

    この例ではremotePublisherアダプタがイベントをパブリッシュする対象のリモートHTTPパブリッシュ/サブスクライブ・サーバーのURLはhttp://myhost.com:9102/pubsub となります。

  4. パブリッシュ用の各ローカル pub-subアダプタについて、server-context-path要素を追加して、現在のOracle CEPアプリケーションをホストするOracle CEPインスタンスに関連付けられたローカルHTTP pub-subサーバーのパスを指定します。

    デフォルトでは、各Oracle CEPサーバーはパス/pubsubのHTTP pub-subサーバーで構成されていますが、新しいローカルHTTP pub-subサーバーを作成した場合や、デフォルトの構成を変更した場合は、サーバーのconfig.xmlファイルのhttp-pubsub要素のpath子要素の値を指定します。例:

        <http-pub-sub-adapter>
            <name>localPublisher</name>
            <server-context-path>/pubsub</server-context-path>
            ...
        </http-pub-sub-adapter>
    
  5. ローカルまたはリモート、パブリッシュまたはサブスクライブにかかわらず、すべてのpub-subアダプタについてchannel子要素を追加して、pub-subアダプタがパブリッシュまたはサブスクライブするチャネルを指定します。例:

    <http-pub-sub-adapter>
        <name>localPublisher</name>
        <server-context-path>/pubsub</server-context-path>
        <channel>/channel2</channel>
    </http-pub-sub-adapter>
    

    この例ではlocalPublisherパブリッシュ/サブスクライブ・アダプタはパターン/channel2を用いてローカル・チャネルにパブリッシュします。

  6. サブスクライブ用のすべてのpub-subアダプタについて、受信メッセージがマップされるJavaBeanを指定するevent-type要素を追加します。この要素はすべてのサブスクライブ用アダプタで指定する必要があります。実行時、Oracle CEPでは受信メッセージのキーと値のペアを使用して、メッセージ・データが指定のイベント・タイプにマップされます。

    event-type要素で指定されたイベントにのみパブリッシュするイベントの種類を限定する場合はオプションでパブリッシュ用のパブリッシュ/サブスクライブ・アダプタにevent-type要素を使用できます。それ以外の場合はパブリッシュ/サブスクライブ・アダプタに送信されるすべてのイベントがパブリッシュされます。例:

    <http-pub-sub-adapter>
        <name>remoteSubscriber</name>
        <server-url>http://myhost.com:9102/pubsub</server-url>
        <channel>/channel3</channel>
        <event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
    </http-pub-sub-adapter>
    

    このイベント・タイプが、wlevs:event-type-repository要素の子要素として指定することによってEPNアセンブリ・ファイルに登録されていることを必ず確認してください。

  7. 最後に、Oracle CEPアプリケーションがパブリッシュするHTTP pub-subサーバーでユーザー認証が要求される場合は、userおよびpassword (または encrypted-password)要素を追加してユーザー名とパスワードまたは暗号化されたパスワードを指定します。例:

    <http-pub-sub-adapter>
        <name>remotePublisher</name>
        <server-url>http://myhost.com:9102/pubsub</server-url>
        <channel>/channel1</channel>
        <event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
        <user>wlevs</user>
        <password>wlevs</password>
    </http-pub-sub-adapter>
    
  8. 着信または発信メッセージがイベント・タイプに変換される方法をカスタマイズする必要がある場合は、必要に応じてコンバータJavaクラスを作成します。メッセージと特定のイベント・タイプの間のマップ・プロパティ名に基づいてOracle CEPで変換が行われるよう指定できるため、この手順は省略できます。

    8.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。

  9. Oracle CEPインスタンスに関連付けられたローカルのHTTP pub-subサーバーをローカル・パブリッシュ用に使用する場合は、Oracle CEP管理ツールのVisualizerを使用して、アプリケーションで必要なチャネル・パターンで新しいチャネルを作成します。

    詳細は、『Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ・サブスクライブ・チャネルのセキュリティ構成に関する項を参照してください。

  10. アプリケーションに追加される各組込みpub-subアダプタの宣言を追加して、EPNアセンブリ・ファイルを更新します。

    8.4項「HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成」を参照してください。

  11. Import-Packageヘッダーにパッケージcom.bea.core.encryptionを追加して、アプリケーションのMANIFEST.MFファイルを更新します。例:

    Import-Package:  
      com.bea.core.encryption
      com.bea.wlevs.adapter.defaultprovider;version="11.1.1.4_0",
      ...
    

    マニフェスト・ファイルの追加情報は、24.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

8.3 HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成

メッセージ(サブスクライブでのHTTP pub-subアダプタ経由の着信、またはパブリッシュでのHTTP pub-subアダプタ経由の発信)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。

インバウンドHTTP pub-subメッセージ用のカスタム・コンバータBeanでは、com.bea.wlevs.adapters.httppubsub.api.InboundMessageConverterインタフェースを実装する必要があります。このインタフェースには1つのメソッドが含まれています。

public List convert(JSONObject message) throws Exception;

messageパラメータは受信HTTP pub-subメッセージに対応します。戻り値は、イベント処理ネットワークの次のステージに渡されるイベントのListです。受信メッセージはJSON形式であることが想定されます。

アウトバウンドHTTP pub-subメッセージ用のカスタム・コンバータBeanでは、com.bea.wlevs.adapters.httppubsub.api.OutboundMessageConverterインタフェースを実装する必要があります。このインタフェースには1つのメソッドが含まれています。

public List<JSONObject> convert(Object event) throws Exception;

パラメータはEPNのソース・ノードから送られ、アウトバウンドHTTP pub-subアダプタで受信されたイベントに対応します。戻り値は、JSONメッセージのListです。

これらのAPIの詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

次の例は、InboundMessageConverterおよびOutboundMessageConvertの両方を実装するカスタム・コンバータBeanのJavaソースを示します。このBeanはインボウンドおよびアウトバウンドの両方のHTTP pub-subアダプタで使用できます。

package com.sample.httppubsub;
import com.bea.wlevs.adapters.httppubsub.api.InboundMessageConverter;
import com.bea.wlevs.adapters.httppubsub.api.OutboundMessageConverter;
import com.bea.httppubsub.json.JSONObject;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class TestConverter implements InboundMessageConverter, OutboundMessageConverter {
    public List convert(JSONObject message) throws Exception {
        List eventCollection = new ArrayList();
        PubsubTestEvent event = new PubsubTestEvent();
        event.setMessage("From TestConverter: " + message);
        eventCollection.add(event);
        return eventCollection;
    }
    public List<JSONObject> convert(Object event) throws Exception {
        List<JSONObject> list = new ArrayList<JSONObject>(1);
        Map map = new HashMap();
        map.put("message", ((PubsubTestEvent) event).getMessage());
        list.add(new JSONObject(map));
        return list;
    }
}

JavaオブジェクトをJSON形式に変換するためにGSON Javaライブラリを使用できます。

詳細は、次を参照してください:

8.4 HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成

イベント処理ネットワークの各HTTP Pub-Subアダプタについて、アプリケーションのEPNアセンブリ・ファイルに対応するwlevs:adapter要素を追加する必要があります。provider属性を使用して、HTTP Pub-Subアダプタがパブリッシュ用かサブスクライブ用かを指定します。

EPNの他の段階と同様に、リスナーをwlevs:adapter要素に追加して、HTTP Pub-Subアダプタをイベント処理ネットワークに統合します。ご使用のOracle CEPアプリケーションの要件によって、EPNでHTTP Pub-Subアダプタが適合する場所が決まります。

この項では次について説明します:

詳細は、次を参照してください:

8.4.1 パブリッシュ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成

パブリッシュ(ローカルまたはリモートのいずれか)用の組込みpub-subアダプタを使用する場合は、次に示すように provider属性をhttppubに設定します。

<wlevs:adapter id="remotePublisher" provider="httppub"/>

id属性の値(この場合はremotePublisher)は、構成ファイルでこの組込みpub-subアダプタに指定された名前と一致している必要があります。EPNアセンブリ・ファイル内のパブリッシュ用組込みアダプタの宣言ではアダプタがローカルまたはリモートのどちらであるかが指定されません。この指定はアダプタ構成ファイルで行います。

EPNの他のステージと同様に、wlevs:adapter要素にリスナーを追加してpub-subアダプタをイベント処理ネットワークに統合します。通常、サブスクライブ用のpub-subアダプタは(メッセージを受信するため) EPNの最初のステージであり、パブリッシュ用のpub-subアダプタは(メッセージを送信するため)より後方のステージです。ただし、pub-subアダプタが配置されるネットワーク内の場所は、独自のOracle CEPアプリケーションの要件に応じて定義されます。

また、pub-subアダプタで使用されるイベント・タイプがwlevs:event-type-repository要素を使用してイベント・タイプ・リポジトリに登録されていることを必ず確認してください。

次のEPNファイルの例は、ローカルおよびリモートのパブリッシュ用の2つの組込みpub-subアダプタが含まれたイベント処理ネットワークを示します。例の後に説明があります。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/osgi
  http://www.springframework.org/schema/osgi/spring-osgi.xsd
  http://www.bea.com/ns/wlevs/spring
  http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
    <wlevs:event-type-repository>
        <wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent">
            <wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class>
        </wlevs:event-type>
    </wlevs:event-type-repository>
    <wlevs:adapter id="receiveFromFeed"
                   class="com.mycompany.httppubsub.ReceiveFromFeed">
    </wlevs:adapter>
    <wlevs:processor id="pubsubProcessor" />
    <wlevs:adapter id="remotePublisher" provider="httppub"/>
    <wlevs:adapter id="localPublisher" provider="httppub"/>
    <wlevs:channel id="feed2processor">
        <wlevs:source ref="receiveFromFeed"/>
        <wlevs:listener ref="pubsubProcessor"/>
    </wlevs:channel>
    <wlevs:channel id="pubsubStream">
        <wlevs:listener ref="remotePublisher"/>
        <wlevs:listener ref="localPublisher"/>
        <wlevs:source ref="pubsubProcessor"/>
    </wlevs:channel>
</beans>

上記の例で注目すべき点は以下のとおりです。

  • receiveFromFeedアダプタはあるデータ・フィードからのデータを受信するカスタム・アダプタです。このアダプタの詳細はこのトピックには関係ありません。receiveFromFeedアダプタは、feed2processorストリームを介してpubsubProcessorにイベントを送信します。

  • pubsubProcessorreceiveFromFeedアダプタからのイベントを処理し、pubsubStreamチャネルに送信します。イベントはここからremotePublisherlocalPublisherの2つの組込みpub-subアダプタに送信されます。

  • これらの2つのpub-subアダプタの構成に基づいて(「8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remotePublisherではcom.mycompany.httppubsub.PubsubEventタイプのイベントのみが、http://myhost.com:9102/pubsub.でホストされるリモートHTTP pub-subサーバーのチャネル/channel1にパブリッシュされます。

    localPublisher pub-subアダプタは受信したすべてのイベントをローカルHTTP pub-subサーバーにパブリッシュします。つまり、これはアプリケーションが実行中のOracle CEPサーバーに関連付けられているサーバーです。ローカルpub-subサーバーのパスは/pubsubであり、アダプタがパブリッシュするチャネルは/channel2です。

次のEPNファイルの例は、サブスクライブ用の組込みpub-subアダプタが含まれたイベント処理ネットワークを示します。例の後に説明があります。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/osgi
  http://www.springframework.org/schema/osgi/spring-osgi.xsd
  http://www.bea.com/ns/wlevs/spring
  http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
    <wlevs:event-type-repository>
        <wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent">
            <wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class>
        </wlevs:event-type>
    </wlevs:event-type-repository>
    <wlevs:adapter id="remoteSubscriber" provider="httpsub">
        <wlevs:listener ref="myEventBean"/>
    </wlevs:adapter>
    <bean id="myEventBean"
          class="com.mycompany.httppubsub.MyEventBean">
    </bean>
    <wlevs:channel id="pubsubStream" advertise="true">
        <wlevs:listener>
            <bean id="mySink"
                  class="com.mycompany.httppubsub.MySink"/>
        </wlevs:listener>
        <wlevs:source ref="myEventBean"/>
    </wlevs:channel>
</beans>

上記の例で注目すべき点は以下のとおりです。

  • remoteSubscriberアダプタはサブスクライブ用の組込みpub-subアダプタです。

    アダプタの構成に基づいて(8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remoteSubscriberは、http://myhost.com:9102/pubsubでホストされるリモートHTTP pub-subサーバー用に構成されたチャネル/channel3をサブスクライブします。Oracle CEPではこのチャネルから受信された各メッセージがcom.mycompany.httppubsub.PubsubEventのインスタンスに変換され、myEventBeanというSpring Beanに送信されます。

  • myEventBeancom.mycompany.httppubsub.MyEventBeanクラスの記述に従ってイベントを処理し、pubsubStreamチャネルを通じてmySinkイベント・ソースをイベントに渡します。これらのコンポーネントの詳細はHTTP pub-subアダプタのトピックと関係がないため、この項では取り上げません。

8.4.2 サブスクライブ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成

サブスクライブ用の組込みpub-subアダプタを使用する場合は、次に示すように、provider属性をhttpsubに設定します。

<wlevs:adapter id="remoteSubscriber" provider="httpsub"/>

id属性の値(この場合はremoteSubscriber)は、構成ファイルでこの組込みpub-subアダプタに指定された名前と一致している必要があります。

id属性の値(この場合はremoteSubscriber)は、構成ファイルのこのHTTP Pub-Subアダプタに指定した名前と一致している必要があります。構成ファイルでは、このアダプタがサブスクライブする対象のHTTP Pub-Subサーバーを構成します。

次のサンプルのEPNファイルは、サブスクライブ用の1つの組込みpub-subアダプタを持つイベント処理ネットワークを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/osgi
  http://www.springframework.org/schema/osgi/spring-osgi.xsd
  http://www.bea.com/ns/wlevs/spring
  http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
    <wlevs:event-type-repository>
        <wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent">
            <wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class>
        </wlevs:event-type>
    </wlevs:event-type-repository>
    <wlevs:adapter id="remoteSubscriber" provider="httpsub">
        <wlevs:listener ref="myEventBean"/>
    </wlevs:adapter>
    <bean id="myEventBean"
          class="com.mycompany.httppubsub.MyEventBean">
    </bean>
    <wlevs:channel id="pubsubStream" advertise="true">
        <wlevs:listener>
            <bean id="mySink"
                  class="com.mycompany.httppubsub.MySink"/>
        </wlevs:listener>
        <wlevs:source ref="myEventBean"/>
    </wlevs:channel>
</beans>

8.5 HTTP Pub-Subアダプタのコンポーネント構成ファイルの構成

HTTP Pub-Subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。

HTTP Pub-Subアダプタを構成する場合のルート要素はhttp-pub-sub-adapterです。特定のアダプタのname子要素は、このアダプタが宣言されているEPNアセンブリ・ファイル内の対応するwlevs:adapter要素のid属性と一致している必要があります。

この項では次について説明します:

詳細は、次を参照してください:

8.5.1 パブリッシュ用のHTTP Pub-Subアダプタのコンポーネント構成

表8-1には、パブリッシュ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。

表8-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素

子要素 説明

server-context-path

必須。パブリッシュ用の各ローカルHTTP Pub-Subアダプタについて、現在のOracle CEPアプリケーションをホストするOracle CEPインスタンスに関連付けられたローカルHTTP Pub-SubサーバーのOracle CEPサーバーのconfig.xmlファイル要素http-pubsubの子要素pathの値を指定します。

デフォルト: /pubsub

新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当するpath子要素の値を指定します。

注意: リモートHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

server-url

必須。パブリッシュ用の各リモートHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。例:

http://myhost.com:9102/pubsub

注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

channel

必須。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがパブリッシュする先のチャネルを指定します。

event-type

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、JavaBeanイベントの完全修飾クラス名を指定します。指定しない場合、HTTP Pub-Subアダプタに送信されるすべてのイベントがパブリッシュされます。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」を参照してください。

user

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。

password

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

encrypted-password

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証とパスワードの暗号化が必要な場合は、 暗号化されたパスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。


次の構成ファイルは、パブリッシュ用のHTTP Pub-Subアダプタを構成する場合の完全な例を示しています。リモートとローカルの両方のパブリッシャが含まれています。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config 
  xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd"
  xmlns:n1="http://www.bea.com/ns/wlevs/config/application" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <http-pub-sub-adapter>
        <name>remotePublisher</name>
        <server-url>http://myhost.com:9102/pubsub</server-url>
        <channel>/channel1</channel>
        <event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
        <user>wlevs</user>
        <password>wlevs</password>
    </http-pub-sub-adapter>
    <http-pub-sub-adapter>
        <name>localPublisher</name>
        <server-context-path>/pubsub</server-context-path>
        <channel>/channel2</channel>
    </http-pub-sub-adapter>
    <http-pub-sub-adapter>
        <name>remoteSubscriber</name>
        <server-url>http://myhost.com:9102/pubsub</server-url>
        <channel>/channel3</channel>
        <event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
    </http-pub-sub-adapter>
</n1:config>

8.5.2 サブスクライブ用のHTTP Pub-Subアダプタのコンポーネント構成

表8-2には、サブスクライブ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。

表8-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素

子要素 説明

server-url

必須。サブスクライブ用の各リモートHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。

注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

channel

必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがサブスクライブする先のチャネルを指定します。

event-type

必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされるJavaBeanの完全修飾クラス名を指定します。実行時、Oracle CEPでは着信メッセージのキーと値のペアを使用して、メッセージ・データが指定のイベント・タイプにマップされます。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」を参照してください。

user

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。

password

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

encrypted-password

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証とパスワードの暗号化が必要な場合は、暗号化されたパスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。


次の構成ファイルは、サブスクライブ用のHTTP Pub-Subアダプタを構成する場合の完全な例を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config 
  xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd"
  xmlns:n1="http://www.bea.com/ns/wlevs/config/application" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <http-pub-sub-adapter>
        <name>remotePublisher</name>
        <server-url>http://myhost.com:9102/pubsub</server-url>
        <channel>/channel1</channel>
        <event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
        <user>wlevs</user>
        <password>wlevs</password>
    </http-pub-sub-adapter>
    <http-pub-sub-adapter>
        <name>localPublisher</name>
        <server-context-path>/pubsub</server-context-path>
        <channel>/channel2</channel>
    </http-pub-sub-adapter>
    <http-pub-sub-adapter>
        <name>remoteSubscriber</name>
        <server-url>http://myhost.com:9102/pubsub</server-url>
        <channel>/channel3</channel>
        <event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
    </http-pub-sub-adapter>
</n1:config>