Access Keys:
Skip to content (Access Key - 0)

ESB Muleは内部通知を発行しています。コンポーネントが追加されば場合、モデルが初期化された場合、マネージャが起動した場合などのサーバの通知を感知することができます。これらの通知を感知して、エージェント又はESB Muleが管理しているコンポーネントなどのコンポーネントをサーバの変更に対応させることができます。

通知(Notification)とサービス・イベントを混雑しないようにしてください。サービス・イベントは、ESB Muleが管理するコンポーネントと外部アプリケーション間で発生するイベントです。
サーバ通知はESB Muleサーバを構成するオブジェクト間で発生する通知です。サービス・イベントはビジネス・サービスが処理するビジネスの作業です。

 
現在では12種類のサーバ通知(Server Notifications)が用意されています:
 

  1. マネージャ通知(Manager Notification) - ESB Muleマネージャの状態に変化があった場合に通知します。例:初期化、開始、停止
  2. モデル通知(Model Notification) - ESB Muleモデル(Model)の状態に変化があった場合に通知します。例:初期化、開始、停止、コンポーネントの登録、解除
  3. コンポーネント通知(Component Notification) - 指定したコンポーネントが開始、停止、一時停止、再生した場合に通知します。
  4. マネージメント通知(Management Notification) - 監視しているリソースの値が低くなった場合に通知します。(現在は未対応)
  5. カスタム通知(Custom Notification) - オブジェクトがカスタムの通知リスナーへ出す通知です。エージェント、コンポーネント、コネクタ等の通知のカスタマイズを可能にします。
  6. 管理通知(Admin Notification) - ESB Mule管理エージェントがリクエストを受信した場合に通知します。多くの場合は、ESB MuleClientがRemoteDispatcherを利用してリモート・サーバを呼び出した場合に発生します。
  7. 接続通知(Connection Notification) - コネクタがリソースに接続する場合に通知します。接続したとき、解放されたとき、接続に失敗したときに通知がだされます。
  8. メッセージ通知(Message Notification) - システムにイベントを送信、受信した場合に通知します。トレースをすることができますが、性能を低下するので、デフォルトでは無効に設定されています。有効に設定する説明は下の節でされています。
  9. セキュリティ通知(Security Notification) - リクエストの認証が失敗した場合に通知します。
  10. スペース監視通知(Space Monitor Notification) - JavaSpaces, JCache,ESB Mule内部スペースのようなスペースの実装でイベントを受信・送信した場合に通知が出されます。詳細に付いては[スペース|Spaces]を参照してください。
  11. 例外通知(Exception Notification) - 例外が投げられたときに通知します。 (ESB Mule 1.4.2以降で対応)
  12. トランザクション通知(Transaction Notification) - トランザクション・ライフ・サイクル中に通知されます。トランザクションが開始、コミット、ロールバックされた場合に通知します。 (ESB Mule 1.4.2以降で対応)

サーバ・イベント・リスナー・オブジェクトは一つ以上の下のインターフェースを実装ます:

  1. org.mule.impl.internal.notifications.ManagerNotificationListener
  2. org.mule.impl.internal.notifications.ModelNotificationListener
  3. org.mule.impl.internal.notifications.ComponentNotificationListener
  4. org.mule.impl.internal.notifications.ManagementNotificationListener
  5. org.mule.impl.internal.notifications.CustomNotificationListener
  6. org.mule.impl.internal.notifications.AdminNotificationListener
  7. org.mule.impl.internal.notifications.ConnectionNotificationListener
  8. org.mule.impl.internal.notifications.MessageNotificationListener
  9. org.mule.impl.internal.notifications.SecurityNotificationListener
  10. org.mule.impl.internal.notifications.SpaceMonitorNotificationListener
  11. org.mule.impl.internal.notifications.ExceptionNotificationListener
  12. org.mule.impl.internal.notifications.TransactionNotificationListener

これのインターフェースは全て次の1つのメソッドをもちます:

public void onNotification(UMOServerNotification notification);

実装したリスナーによって、感知されるイベントは制限されます。例えば、 ManagerNotificationListener を実装したオブジェクトはイベント ManagerNotification のみを感知します。複数のイベントを感知するには、複数のリスナーを実装します。

リスナーをUMOManagerに登録することができます:

MuleManager.getInstance().registerListener(listener);

イベント毎にイベント型を示す状態コード(action code)があります。onEvent メソッドを使って状態コードを取得することができます。以下はモデル(Model)が初期化(initialize)した場合に処理を実行する例です:

MyObject.java
public class MyObject implements ModelNotificationListener
{
    public MyObject()
    {
        MuleManager.getInstance().registerListener(this);
    }

    public void onNotification(UMOServerNotification notification)
    {
        if (notification.getAction() == ModelNotification.MODEL_INITIALISED)
        {
            system.out.println("モデルが初期化されました!");
        }
    }
}

MessageNotificationsを有効にする

メッセージ通知は特定のタイミングにESB Muleサーバに送受信された全ての情報を提供することができます。メッセージの送受信毎に通知が出されます。想像されるように、これらのイベントは性能に影響をします。そのために、デフォルトでは無効に設定されています。有効にするには、<mule-environment-properties>タグの enableMessageEvents 属性をtrueに設定します。
例:

<mule-environment-properties enableMessageEvents="true"/>

カスタムの通知(Notification)を発行する

ESB Muleのオブジェクトはカスタム通知をカスタム・リスナー宛てに発行することができます。例えば、クライアント監視エージェント(Discovery Agent)はクライアントが接続した場合に「Client Found」イベントを発行することができます。

以下は自前のイベントを発行する例です:

CustomNotification n = new CustomNotification("Hello");
MuleManager.getInstance().fireNotification(n);

CustomNotificationListener を実装したどのオブジェクトもこのイベントを受信することができます。良い習慣としては、CustomNotificationを継承して、カスタム・イベント・タイプの状態を定義します。

下の監視エージェントの例です:

DiscoveryNotification n = new DiscoveryNotification(client, DiscoveryNotification.CLIENT_ADDED);
MuleManager.getInstance().fireNotification(n);

ESB Muleの非システム・オブジェクトは、マネージャを介してのみカスタム通知(notification)を発行することができます。ModelNotificationのような他イベントを発行しようとすると、UnsupportedOperationException例外が投げられます。


イベントのサブスクリプション(Event Subscriptions)

イベント・リスナーにサブスクリプションを付けて、サブスクリプションに該当したイベントのみリスターが感知するようにできます。サブスクリプションはイベント(次の節を参照)の「Resource ID」と照合されるワイルドカードの文字列式です。以下はイベント・リスナーにコンポーネント名が MyService1 のイベントのみを取得するリスナーを登録する例です:

MuleManager.getInstance().registerListener(listener, "MyService1");

名前に「Service」が含まれている全てのコンポーネントを照合するには、以下のように記述します:

MuleManager.getInstance().registerListener(listener, "*Service*");

通知のペイロード(Notification payloads)

全ての通知は java.util.EventObject を継承し、オブジェクトのペイロードは getSource() で取得することができます。次の表はイベント・タイプ毎にイベント・ペイロードを説明します。

イベント ペイロード・タイプ リソースID 説明
ManagerNotification UMOManager Manager ID UMOManagerのインスタンス。MuleManager.getInstance()メソッドを呼び出すのと同じです。
ModelNotification UMOModel Model Name マネージャのUMOModelインスタンス。MuleManager.getInstance().getModel()メソッドを呼び出すのと同じです。
ComponentNotification UMOComponent Component Name 通知を発行させたコンポーネント
ManagementNotification not implemented   未実装
CustomNotification Any object Any String オブジェクトが発行したカスタムの通知
AdminNotification UMOMessage The request endpoint 受信した管理リクエスト
ConnectionNotification UMOConnectable <connector-name>.receiver(<endpoint-uri>) 接続したメッセージ・リシーバー又はメッセージ・ディスパッチャー
MessageNotification UMOMessage Component name 送信又は受信したメッセージ。
SecurityNotification SecurityException The Exception Message 投げられた認証例外
SpaceMonitorNotification UMOSpace Space name 通知を発行したスペース。データがある場合は、通知(Notification)から SpaceMonitorNotification.getItem() メソッドで取得できます。
ExceptionNotification Throwable Component Name このイベントを発行させたコンポーネント (ESB Mule 1.4.2以降で対応)
|
TransactionNotification UMOTransaction Component Name このイベントを発行させたコンポーネント。 (ESB Mule 1.4.2以降で対応)
|

通知状態(Notification Actions)

各通知・タイプの状態を説明します。

ManagerNotification

状態 説明
MANAGER_INITIALISNG UMOManager.initialise()が呼ばれたけど、まだ実行されていない。
MANAGER_INITIALISED UMOManagerを初期化した。
MANAGER_STARTING UMOManager.start()を呼んだが、まだ実行されていない。
MANAGER_STARTED UMOManagerを開始した。
MANAGER_STOPPING UMOManager.stop()を呼んだが、まだ実行されていない。
MANAGER_STOPPED UMOManagerが停止した。
MANAGER_DISPOSING UMOManager.dispose()を呼んだが、まだ実行されていない。
MANAGER_DISPOSED UMOManagerを解放した。
MANAGER_DISPOSING_CONNECTORS 登録されたコネクタがもうすぐ解放される。
MANAGER_DISPOSED_CONNECTORS コネクタを解放した。

ModelNotification

状態 説明
MODEL_INITIALISING UMOModel.initialise()を呼んだが、まだ実行されていない。
MODEL_INITIALISED UMOModelを開始した。
MODEL_INITIALISING_LISTENERS コネクタにコンポーネント・リスナーがもうすぐで登録される。
MODEL_INITIALISED_LISTENERS コンポーネント・リスナーが登録された。
MODEL_STARTING UMOModel.start()を呼んだが、まだ実行されていない。
MODEL_STARTED UMOModelを開始した。
MODEL_STOPPING UMOModel.stop()を呼んだが、まだ実行されていない。
MODEL_STOPPED UMOModelを停止した。
MODEL_DISPOSING UMOModel.dispose()を呼んだが、なだ実行されていない。
MODEL_DISPOSED The UMOModelを解放した。

ComponentNotification

状態 説明
COMPONENT_INITIALISED コンポーネントを初期化した時に通知します。
COMPONENT_STARTED コンポーネントを開始した時に通知します。
COMPONENT_STOPPED コンポーネントを停止した時に通知します。
COMPONENT_PAUSED コンポーネントを一時停止した時に通知します。
COMPONENT_RESUMED コンポーネントを再生した時に通知します。
COMPONENT_DISPOSED コンポーネントを解放した時に通知します。

ManagementNotification

未対応

CustomNotification

状態 説明
NULL_ACTION イベントに状態が設定されていない。

AdminNotification

状態 説明
ACTION_RECEIVE ESB Mule[管理エージェント]からリモート・受信呼び出しがされた。
ACTION_DISPATCH ESB Mule[管理エージェント]を介して非同期リモート・ディスパッチ(dispatch)が行われた時に通知します。
ACTION_SEND ESB Mule [管理エージェント]を介して同期リモート送信(send)が行われた時に通知します。
ACTION_INVOKE ESB Mule [管理エージェント]を介してコンポーネントに直接リモート呼び出しが行われた時に通知します。

ConnectionNotification

状態 説明
CONNECTION_CONNECTED コネクタがリソースを正常に接続した。
CONNECTION_FAILED 接続に失敗した時に通知します。
CONNECTION_DISCONNECTED リソースから接続を切断した時に通知します。原因としてネットワーク障害やJMX及びサーバがシャットダウンしたことが挙げられます。

MessageNotification

状態 説明
MESSAGE_RECEIVED ESB Muleインスタンスがメッセージを受信した時に通知します。
MESSAGE_DISPATCHED ESB Muleインスタンスから非同期メッセージがディスパッチされた時に通知します。
MESSAGE_SENT ESB Muleインスタンスから同期メッセージが送信された時に通知します。
MESSAGE_REQUESTED ESB Muleインスタンスを介してメッセージが要求された時に通知します。(MuleClient.receive(...)が呼ばれた時)

SecurityNotification

状態 説明
SECURITY_AUTHENTICATION_FAILED メッセージを受信したが、認証に失敗した時に通知します。

SpaceNotificationNotification

状態 説明
SPACE_CREATED 新しいスペースが生成された時に通知します。
SPACE_DISPOSED スペースが解放された時に通知します。
SPACE_ITEM_ADDED スペースに項目が追加された時に通知します。
SPACE_ITEM_REMOVED スペースから項目が除去された時に通知します。
SPACE_ITEM_EXPIRED スペースの項目は期限切れした時に通知します。
SPACE_ITEM_MISS スペースから項目を要求されたが、結果が無い時に通知します。
SPACE_LISTENER_ADDED スペースにリスターが登録された時に通知します。
SPACE_LISTENER_REMOVED スペースのリスナーが解放された時に通知します。

ExceptionNotification

状態 説明
EXCEPTION_ACTION 例外が発生してorg.mule.impl.DefaultExceptionStrategy又はそのサブクラスで処理された場合に通知します。

TransactionNotification

状態 説明
TRANSACTION_BEGAN トランザクションが開始した後に通知します。
TRANSACTION_COMMITTED トランザクションがコミットされた後に通知します。
TRANSACTION_ROLLEDBACK トランザクションがロールバックされた後に通知します。


Adaptavist Theme Builder (3.3.2-conf2.10) Powered by Atlassian Confluence 2.10, the Enterprise Wiki.
Free theme builder license