ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     Event ユーザーズ ガイド (非推奨)   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

WebLogic Events の概要

 

WebLogic Event API は、パブリッシュ/サブスクライブ パラダイムを使用した軽量のイベント管理システムを提供します。たとえば、WebLogic/JDBC クライアントは、WebLogic Server にイベントを送信(パブリッシュ)できます。WebLogic Server の他のクライアントは、これらのイベントへの関心を登録(つまりイベントをサブスクライブ)できます。新しいイベントが発生すると、WebLogic Server はそれをサブスクライバに通知します。

クライアントは、エバリュエータと呼ばれる条件を指定することができ、その条件が満たされないと、イベントはクライアントに送られません。エバリュエータは不必要なネットワーク トラフィックを防止できます。エバリュエータは WebLogic Server 上で実行されます。

クライアントは、イベントが発生したときのアクションも指定します。イベントの結果から発生するアクションは、サーバ サイドにもクライアント サイドにも実装できます。このマニュアルの「 イベントへの関心の登録」を参照してください。

サービスの 1つである WebLogic Event は、JDBC、RMI、ロギング、インスツルメンテーション、ワークスペースなど、WebLogic の他のすべてのサービスを利用することができます。これらのサービスはすべて、WebLogic に統合されています。これらの API は共通の側面を多く共有しているので、複雑なネットワーク アプリケーションの構築が容易になります。アプリケーションは複数のサービスを利用でき、それらはすべてオブジェクトとクライアント リソースへのアクセスを共有することができます。

どの WebLogic Server も他のサーバ上のイベントに対してパブリッシュとサブスクライブを同時に行えるので、複数の WebLogic Server が WebLogic クラスタとして連動して、通知と登録を管理することができます。

WebLogic Server は、JavaSoft の Java Messaging Service(JMS)仕様を実装しています。WebLogic Event を使用できるどのアプリケーションでも、WebLogic JMS を使用できます。WebLogic JMS は、WebLogic Event に備わっていない、メソッド永続性、ポイントツーポイント メッセージング、保証付きメッセージ配信シーケンスなどの機能を提供します。WebLogic JMS は業界標準インタフェースなので、WebLogic JMS を使用して新しいイベントベース アプリケーションを実装することをお勧めします。もちろん、JMS が提供する高度な機能を必要としないアプリケーションでは、WebLogic Event を使用してもかまいません。WebLogic Event サービスは小規模で高速に動作しますが、JMS に比べると機能が限定されています。WebLogic JMS の詳細については、『WebLogic JMS プログラマーズ ガイド』を参照してください。

 


WebLogic Event のアーキテクチャ

トピック ツリー

トピック ツリーは、WebLogic Event のアーキテクチャ上の主要機能です。トピック ツリーは WebLogic Server 上に存在し、その中には、クライアントがサブスクライブしたすべてのイベント トピックが入っています。これは、WebLogic クライアントが WebLogic Event のサブスクライブおよびパブリッシュを行うときに、それらのイベントを記憶し処理するのに用いられるデータ構造です。

トピック ツリーの構造

このツリー構造によって、イベント タイプをカテゴリへ、さらにサブカテゴリへグループ化できるようになり、ツリー内の分岐は、その分岐元のイベントのサブカテゴリを表します。適切に構成されたトピック ツリーでは、ルート ノードからリーフ ノードへ進むにつれて、イベント トピックはより具体的なものになります。

ツリー内のイベントを記述するための表記は、ドメイン アドレスのドット表記に似ています。それぞれの単語が、ツリー内の特定の分岐でのイベントを表します。たとえば、comms.devices.telephone.ring または comms.devices.telephone.page です。これにより、クライアントは、完全イベント修飾子を使って特定のイベント トピックをサブスクライブできるようになります。また、このモデルによって、クライアントは分岐レベルへの関心を指定するだけで、イベント トピックの一般カテゴリをサブスクライブできるようにもなります。たとえば、comms.devices.telephone の場合、電話に関係するあらゆるイベントをリスンすることになります。

ただし、ツリーの編成は、WebLogic のフレームワークを構成するクライアント アプリケーションが処理する必要があります。開発者は、イベントを適切に組織化して、この構造を最大限に利用するようにシステムをプログラミングする必要があります。

構造化ツリーの例

どのトピック ツリーでも頂点(つまりルート)には、本質的に「あらゆる種類のイベント」を意味するワイルドカード トピックがあり、これはアスタリスク(*)で表記されます。それ以外のトピックはすべて、ルート トピックより具体的なものとみなされます。ルート トピックへの関心を登録するアプリケーションは、WebLogic Server 上で発生する、トピック ツリー内のすべてのイベントを評価することができます。

図1-1 WebLogic のトピック ツリー


 

図 1-1に示された例には、ルートから派生するトピックの大きな分枝が 2 つあります。stocks(株式)と weather(天気)です。ここで作成したのは、カリフォルニア州の 2 つの都市、ロサンゼルスとサンフランシスコの天気への関心を登録するための典型的なトピック ツリーです。これらのトピックは、以下のように表記されます。

weather.northamerica.us.california.la

および

weather.northamerica.us.california.sf

イベントへの関心の登録

トピック ツリーの作成方法

トピック ツリーは、クライアントがイベント トピックをサブスクライブするときに、WebLogic Server 内部に動的に作成されます。クライアントがトピック ツリー内に存在しないイベント トピックをサブスクライブすると、新しいノードと、そのノードに到達するのに必要な新しい分枝が自動的に作成されます。これで、サブスクライブ側のクライアントは、新しいイベントが発行されるたびにその通知を受け取ることになります。

クライアントがイベント トピックへの関心を登録する方法

WebLogic クライアントは、イベントが発行されたときにそれらを評価し、それらに基づいて動作するために、トピックへの関心を WebLogic Server に登録しなければなりません。ネットワーク上のどの WebLogic クライアント アプリケーションも、WebLogic EventRegistration サービスを通じて、任意の数のイベント トピックへの関心を登録することができます。

登録は、通常は以下の情報と一緒に WebLogic Server に提出されます。

どのイベントをサブスクライブするか。これは登録パラメータで記述されます。

この点については、後でコード例を使って詳しく説明します。「 イベントへの関心の登録」を参照してください。

クライアントがイベント トピックへの関心を登録解除する方法

クライアント アプリケーションは、以下の 2 つの方法のいずれかで関心を登録解除することができます。

count プロパティを使用して、関心をいつ登録解除するかを制御します。イベント登録期間を制御する方法は複数あります。

注意: evaluate() メソッドと action() メソッドが両方とも WebLogic Server に存在する場合のイベント登録については、クライアントが関心の登録を解除する必要があります。一方、action() メソッドがクライアントに存在する場合には、WebLogic クライアントが接続を解除すると、登録解除が自動的に行われます。

イベントの処理

この節では、イベントの伝播の仕組みについて説明します。これを理解すれば、ネットワーク アプリケーション内での WebLogic Event の使い方を理解する上で役に立ちます。

トピック ツリーの走査方法

どのようなアプリケーションでも、WebLogic Server にイベントを提出することができます。イベントは、そのスコープを限定する一連のイベント パラメータを付けて提出されます。イベントが提出されると、WebLogic Server は、トピック ツリー内の特定のイベントに完全に一致するものを見つけようとします。それが見つかった場合、その EventTopic の EventRegistration が処理されます(次に説明します)。完全に一致するものが見つからない場合、またはその EventTopic への関心を登録したクライアントがない場合、そのイベントは、この時点で、送信されないものとみなされます。次いで、具体性の一段低い EventTopic までトピック ツリーをさかのぼり、そのノードの EventRegistration が処理されます。この処理がトピック ツリーの頂点に達するまで繰り返されます。

各 EventRegistration の処理方法

特定の EventTopic に関心がある各クライアントは、そのトピックに対する EventRegistration を登録済みでなければなりません。そのため、トピック ツリー内の各 EventTopic は EventRegistration のリストを備えており、このリストには各クライアントがその EventTopic にどのように関心を持っているかが記述されています。ある EventTopic がある Event に一致すると、そのイベント トピックは各 EventRegistration を以下のように処理します。

sink

登録には sink というフラグが付けられることがあります。これは、関心が登録されたすべてのイベントだけでなく、トピック ツリー内でその登録より下位にあるもっと具体的なトピックに関連付けられているすべてののイベントも評価する機会が必ず与えられることを意味します(sink フラグを true に設定してルート トピック(*)を登録すると、WebLogic Server に提出されるすべてのイベントを評価する機会が保証されます。このような登録の evaluate メソッドが true を返すだけであれば、WebLogic Server に提出されるすべてのイベントに基づいて効率的に動作します)。

登録の sink フラグを false(デフォルト)に設定した場合、クライアントは、正確に一致するイベントが発生したときにのみ通知を受け取り、その分岐より下位のもっと具体的なイベントが発生したときには通知を受け取りません。ただし、この規則には以下のような例外があります。

sink フラグが false に設定されていても、そのイベントがより具体的なイベント トピックに正しく送信されなかった場合には、EventRegistration はより具体的なイベントを評価します。こうしたことは、その時点であるより具体的なイベント トピックに関心を登録しているクライアントがない場合に起こります。トピックは、クライアントがそのトピックへの関心を登録して初めてツリー内に存在するので、イベントを評価する際には注意しなければなりません。sinkfalse に設定しても、クライアントがそのトピックに関連するイベントだけを受け取るとはかぎりません。

イベントはこのようにして評価されるので、受信登録したクライアントがないイベントを捕捉する EventRegistration をセットアップすることができます。

EventRegistration によるイベントの評価方法

クライアントは、EventRegistration を通じてイベントへの関心を登録するときには、その EventRegistration に関連付けられる Evaluate オブジェクトを指定しなければなりません。一致する登録にイベントが到達すると、WebLogic Server はその Evaluate オブジェクトの evaluate() メソッドを呼び出します。Evaluate クラスはインタフェース weblogic.event.evaluators.EvaluateDef を実装するもので、必ずこのメソッドを実装します。通常はユーザが作成したクラスか、または Weblogic のデフォルト エバリュエータの 1 つです。Evaluate クラスは、サーバ上にインストールされなければならず、またサーバの CLASSPATH 内に含まれていなければなりません。

evaluate() メソッドには、イベントに付随するパラメータが渡されます。カスタム メソッドでは、これらのイベント パラメータを解析して、true か false のいずれかを返すことができます。true の場合には、phase が false に設定されていないかぎり、WebLogic Server は Action オブジェクトの action() メソッドを呼び出します。

phase

クライアントがトピックへの関心を登録する場合、phase を設定することがあります。これは、Action を呼び出すロジックを反転させるものです。たとえば、あるアプリケーションが、いつサンフランシスコの天気が晴れになるかに関心がある場合には、登録は以下のようになります。

アクション プロセスの動作の仕組み

評価プロセスが成功すると、その登録のアクション クラスが呼び出されます。

アクション クラスはユーザが作成するクラスで、インタフェース weblogic.event.actions.ActionDef を実装しています。アクション クラスは、Java で記述可能なアクションのすべてを実行できます。アクション クラスの例は ActionEmailActionUDP、および ActionNull で、これらは weblogic.event.actions パッケージに入っています。

Action クラスは、関心の登録を発行した WebLogic クライアントに、エバリュエータが true を返したことを通知できます。クライアントサイドの通知の例については、以下を参照してください。

パラメータの詳細

パラメータには以下のものがあり、WebLogic Server 内のオブジェクトによって使われます。

パラメータは ParamSet オブジェクトとして作成され、それ自体が ParamSet の配列である場合もあります。ParamSet の各パラメータに関連付けられる値は ParamValue オブジェクトで、それ自体が ParamValue の配列である場合があります。

 

back to top previous page next page