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

ESB MuleのコンポーネントはPOO(Plain Old Object - ただのオブジェクト)の場合があります。ESB Muleを使い始めたばかりのユーザにはESB Muleがそれらのコンポーネントとどのように対話するのが明確でないかもしれません。

エントリー・ポイント

エントリー・ポイントとは、コンポーネントがイベントを感知した場合にESB Muleが実行するメソッドである。コンポーネントがイベントを感知すると、ESB Muleはイベントの内容によって動的に実行するメソッドを選定する。その結果、1つのコンポーネントに複数のエントリー・ポイントを設けることが可能であります。イベントのペイロード・タイプはコンポーネントのイベントを受信したプロバイダの受信(inbound)トランスフォーマーで決められる場合が多いです。ただし、SOAPプロバイダのようにタイプ・マッピングを独自で行い、トランフフォーマーを不要とするプロバイダもあります。
ESB Muleのデフォルト・インターフェースをorg.mule.umo.lifecycle.Callableを実装すると、動的解決をオーバーライドし、インターフェースで実装したメソッドを呼びます。

イベント・フロー

ESB Muleはコンポーネント間のイベント・フローに付いて以下のようなデフォルトのルールがあります:

  1. イベントを受信した場合は、Entrypointメソッドが呼ばれます。
  2. 返信及び送信(outbound)メッセージは以下のようにして取得されます:
    1. 呼び出したメソッドがvoidでない場合は、(Callable.onEvent()はObjectを返します)メソッドの戻り値を使います。もす戻り値がnullの場合は、レクエストに対して、それ以上の処理は行いません。
    2. メソッドがvoidの場合は、メソッドを呼び出したパラメータが使われます。この場合は、パラメータの値が変更されたか、イベントに変更が無かったと想定されます。
    3. コンポーネントの設定により、送信(outbound)イベントはルートされます。
    4. 送信(outbound)ルータが設定されている場合は、イベントをルートするために使われます。
    5. 1つしか送信(outbound)エンドポイントが設定されていない場合は、それが使われます。
    6. 複数の送信(outbound)エンドポイントが設定されている場合は、最初の設定が使われます。

振舞いのカスタマイズ

多くの場合はデフォルトのイベント・フロー処理で十分ですが、場合によってカスタマイズする必要があります。カスタマイズする場合はorg.mule.umo.UMOEventContextの参照が必要です。方法としては2通りあります:

org.mule.umo.lifecycle.Callableを実装。
イベント情報はこのインタフェースのパラメータとして渡されます。

public interface Callable
{
    public Object onCall(UMOEventContext eventContext) throws Exception;
}

static RequestContextからもEventContextを取得することができます:

UMOEventContext context = RequestContext.getEventContext();

EventContextから同期/非同期でイベントの送受信、トランザクション管理、デフォルト・イベント、フローのオーバーライドを行うことができます。
例:

UMOEventContext context = RequestContext.getEventContext();
UMOEndpoint endpoint = new MuleEndpoint("jms://localhost/topic:stock.quotes");

//非同期で送信
context.dispatchEvent(new MuleMessage("IBM:0.01", null), endpoint);

//受信
UMOMessage quote = context.receive(endpoint, 5000);

イベント・コンテキストを使って手動でイベント・フローを制御する場合でも、メソッドから戻った場合は、ESB Muleは通常通りに送信(outbound)イベントをルートします。
以下の2つの方法でESB Muleの処理を中断することができます:

1.サービス・メソッドがvoidでない場合はnullを返すと、ESB Muleはそれ以上の処理はないと認識します。

2.サービス・メソッドがvoidの場合は、ESB Muleは受信(inbound)イベント・ペイロードを送信(outbound)イベント・ペイロードにします。この処理を変更する場合は、以下のメソッドを呼びます:

context.setStopFurtherProcessing(true);

コンポーネント・ライフサイクル

コンポーネントは0以上の以下のライフサイクル・インターフェースを実装することが可能です:

  • org.mule.umo.lifecycle.Initialisable - コンポーネントのライフサイクルで1回、呼ばれます。コンポーネントが生成され、コンポーネント・プールが初期化されたときに呼ばれます。
  • org.mule.umo.lifecycle.Startable - コンポーネントが起動さればときに呼ばれます。サーバが起動された場合に1回呼ばれ、APIを介して及びJMXで再起動する度にまた呼ばれます。
  • org.mule.umo.lifecycle.Stoppable - コンポーネントが停止するときに呼ばれます。場合としては、API及びJMXを使ってサーバ及びコンポーネントが停止された時が挙げられます。
  • org.mule.umo.lifecycle.Disposable - コンポーネントが解放されたときに呼ばれます。サーバがシャットダウンされたときに1回、呼ばれます。

コンポーネント・ディスクリプタの取得

以下のインターフェースを実装すると、起動時にコンポーネントはディスクリプタを参照することができます。
org.mule.impl.UMODescriptorAware.

UMODescriptor は、コンポーネントに設定できる全ての情報をもちます。

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