非同期呼び出し API

非同期呼び出し API を使用して、 Session Initiation Protocol (SIP) アプリケーション・セッションで処理する必要があるイベントを、 アプリケーション・セッション ID に基づいてクラスター内の任意のサーバーに転送します。

非同期呼び出し API は、非同期作業ディスパッチャーとも呼ばれ、 SIP アプリケーション・セッションに関連した処理を必要とするイベントを、 関連するアプリケーション・セッション ID を使用してクラスター内の任意のサーバーに転送できます。通常、この転送は、 別のサーバー上の SIP セッションへの状態変更を引き起こすことになるイベントによって起動されます。 非同期作業ディスパッチャーは、イベント・タスクを実行すべき適切なサーバーに転送します。

WebSphere Application Server では、関連する SIP メッセージはすべて、クラスター内の同じサーバーに配信され、 セッションは常に同じ SIP コンテナーに置かれます。 同時処理による問題およびロックを回避するためには、同じアプリケーション・セッション内のタスクを 同時に (つまり、異なるスレッドまたはプロセス上で) 処理することはできません。 そのため、特定のタイプのイベントの処理が制限されます。

SIP セッションと SIP アプリケーション・セッション、およびそれらの関係についてさらに詳しくは、Java™ Specification Request (JSR) 289 のセクション 6 を参照してください。

以下の 2 つのシナリオは、 非同期呼び出し API を実装することで解決されます。
  1. 同じ SIP アプリケーション・セッションに関連付けられた 2 つの要求が、 2 つの異なるスレッドで同時に実行されます。例えば、メッセージ駆動型 Bean (MDB) を処理する Java EE (J2EE) アプリケーションは、 特定の SIP アプリケーション・セッションで SIP メッセージを送信するイベントを取得できます。 同時に、SIP コンテナーは、同じアプリケーション・セッションに接続されている 別のセッションで SIP 着信メッセージを受信し、そのメッセージを別のスレッドで処理します。この場合、 競合状態を回避するためにセッションのアクセスを同期化し、 すべてのセッション属性が同期化されるようにする必要があります。 この場合にロック手段を用いても効果がないと考えられます。 SIP アプリケーション・セッションに複数の SIP セッションが含まれる可能性があるためです。
  2. 特定の SIP アプリケーション・セッションを所有しないサーバーは、 非 SIP プロトコルを通じて要求を受信し、そのセッションのコンテキストでメッセージを送信します。 例えば、SIP ダイアログを開始する Web サービスは、 使用すべき SIP アプリケーション・セッションを所有するサーバーとは別のサーバーに常駐することができます。

非同期呼び出し API によって、特定のアプリケーション・コードが、 SIP アプリケーション・セッション ID に応じて適切なサーバーおよび適切なスレッドで実行されます。

非同期呼び出し API には、以下の利点があります。
  1. 非同期呼び出しプロセスに関与するサーバーは 2 つだけです。 1 つは作業タスクを取り出すサーバーで、もう 1 つはそのタスクが転送され、 そのタスクの SIP アプリケーション・セッションを処理するターゲット・サーバーです。
  2. 非同期呼び出しは、スレッド・セーフ方式で作動可能です。 この方式によって、1 つのスレッドのみが、 SIP アプリケーション・セッションに関連するメッセージを処理することが保証されます。 したがって、セッションへのアクセスを同期化する必要がありません。
  3. 非同期呼び出しは、スケーラブルなソリューションを提供します。したがって、クラスターにサーバーを さらに追加しても、パフォーマンスへの影響はありません。
  4. サーバー間の呼び出しは、必要時にのみ使用されます。 これによって、パフォーマンスが向上します。

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ccea_asynch_invocation_api
ファイル名:ccea_asynch_invocation_api.html