エンドポイントはサーバ上のコンポーネントを外部システムと接続、ローカルシステム内で接続、ネットワークを介して接続する場合に利用されます。エンドポイントとは、2つのオブジェクトが通信するために利用する特定しかチャネルです。他システムからイベントを受送信するのにプロバイダを使うことができます。例えば、購買コンポーネントは注文をHTTPを使って受信する場合もあります。コンポーネントが注文を処理した後に、JMSで監査システムにメッセージを送ったり、再びHTTPで通知を送り返すこともできます。
エンドポイントは以下の要素から構成されます:
- エンドポイントURI:エンドポイントは必ずエンドポイントURI属性をもちます。エンドポイントURIとは、ローカル又はリモートの資源及びサービスを特定するためのアドレスです。
エンドポイントURLは正式なURIでなければなりません。
- コネクター:利用するトランスポートと接続するために使います。多くの場合、コネクターは明示的に設定されず、エンドポイントURIから割り出されます。
- フィルタ:エンドポイントで受信したメッセージに適用するフィルタ。トランスポートに特有したフィルタ情報に付いてはトランスポート・ガイドを参照にしてください。
- トランザクション:イベントを受信又は送信したときにトランザクションを開始又はコミットすることができます。特定したトランスポートのトランザクション対応に付いては、トランスポート・ガイドを参照してください。
- プロパティ:このエンドポイント・インスタンスのコネクタの特定したプロパティを上書きします。例えば、SMTPエンドポイントを利用する場合は、アドレスを上書きすることができます。
基本的に、エンドポイントとはESB Muleがイベントの送受信を制御するための要素です。ESB Muleの考え方では、実際にプロトコール上でイベントを送受信するのは、「トランスポート・プロバイダ」又は「プロバイダ」です。
トランスポート
トランスポート・プロバイダとは、下層のシステムと接続して通信するcompositeオブジェクトです。トランスポート・プロバイダは以下の要素を持ちます:
- コネクタは、下層のシステムと接続する役割を持ちます。
- メッセージ・レシーバー(Message Receiver)は、システムからイベントを受信します。
- コネクタ・ディスパッチャ(Connector Dispatchers)は、システムへデータを渡します。
- トランスフォーマーは、トランスポートに特有して、受信及び送信データを変換します。
以下の図は、エンドポイントがどのようにトランスポート・コンポーネントと組み合わさるのかを示した図です:
http://images.mulesource.org/endpoints.gif|align=centre!
エンドポイントの利用
多くのESB Muleオブジェクトにエンドポイントを設定することができます:
- 受信ルータ(Inbound Routers)-コンポーネントに設定されて、コンポーネントに1つ以上の受信エンドポイントを登録できるようにします。
- 送信ルータ(Outbound Routers)-コンポーネントに設定されて、コンポーネントに1つ以上の送信エンドポイントを登録できるようにします。(エンドポイントが処理できるイベントを指定するための設定も行えます。)詳細に付いてはメッセージ・ルータを参照にしてください。
- 全て処理(Catch all strategies)-全て処理するエンドポイント「catch-all endpoint」をルータに設定することができます。
- コンポーネント(Components)-使い勝手をよくするために、コンポーネントに直接1つの受信エンドポイントと送信エンドポイントを設定することができます。ルータを設定するよりも少し便利です。
- 例外処理(Exception Strategies)-全てのイベントを対象にした例外処理をexception strategyに設定することができます。
エンドポイントのスコープ(有効範囲)
エンドポイントは2つの有効範囲があります:グローバルとローカル。
グローバル・スコープ
MuleManagerインスタンスに登録又はESB Mule設定の<global-endpoint>要素に設定されたエンドポイントはグローバル・エンドポイントとみなされて、設定及びプログラム・コードのどこからでも参照することができます。UMOManagerに lookupEndpoint() メソッドを使ってエンドポイントを要求した場合は、ESB Muleはエンドポイントの複製(クローン)を返します。クライアント・プログラムがエンドポイントの属性を変更した場合でも、エンドポイントを使っているシステム上の全てのプログラムに影響を与えないためです。ただし、コネクタは複製されないために、実行中にコネクタの設定を変更すると予定していない影響をシステムに与える可能性があります。そのためにトランスポート・ガイドに記述されていない限りは、コネクタのプロパティを変更しないようにしてください。
ローカル・スコープ
MuleManagerに登録されておらず、「Endpoint」があるオブジェクトに定義又は設定されているエンドポイントです。
詳細情報
エンドポイントの設定に付いてはエンドポイントの設定を参照にしてください。トランスポート・プロバイダの実装に付いては、トランスポート・ガイドを参照にしてください。