製品の技術的な説明

     前  次    新しいウィンドウで目次を開く       
コンテンツの開始位置

SIP サーブレット API のサービスの呼び出し

以下の節では、SIP Servlet API (JSR 116) のサービスの呼び出し方法について説明します。

 


概要

SIP Servlet API は、アプリケーション構造および対話の Service Interaction のモデルを提供します。これは 3GPP で示す Service Capability Interaction Manager (SCIM) の簡単な実施に似ています。受信リクエストの処理はすべて、SIP サーブレット API 仕様に従って、Oracle Communications Converged Application Server SIP サーブレット コンテナで制御されます。

Oracle Communications Converged Application Server SIP サーブレット コンテナは、最初に受信した SIP リクエストをフィルタし、定義済みのルール (サーブレット マッピング ルール) を適用して、特定のリクエストに対応するためにデプロイされたアプリケーション内のどの SIP サーブレットを呼び出すかを判断します。この順番は常にシーケンシャルであり、SIP アプリケーションの連続したデプロイメントで構築されたコンフィグレーション ファイルに定義されています。

デプロイされた各 SIP アプリケーションのデプロイメント記述子には、サーブレット マッピング ルールと呼ばれる一連の条件が定義されています。これらのルールで、どのサーブレットが最初に受信したリクエストを処理するか決定します。リクエスト オブジェクトはサーブレット間で「ルーティング」されているので、サーブレットからサーブレットへのパスは「レコードルート」および SIP リクエスト内の「via」ヘッダと同様の方法で記録されます。このルートは、SIP アプリケーション セッションの一部として格納され、リクエストの「From」および「To」タグの向きにより、「forward」または「reverse」の順序で同じダイアログの後続リクエストとして追加されます。この内部的な「ルート」は、SIP リクエストが Oracle Communications Converged Application Server から送信される前にリクエスト オブジェクトから削除され、外部 SIP サーバから表示することはできません。この内部的な「ルート」は、既存のダイアログにある新しいリクエストが受信されると、再度追加されます。

この方法で呼び出された SIP サーブレット (SIP/HTTP アプリケーション) は、その他の SIP/HTTP アプリケーションが存在するかどうかは無視します。これは、SIP サーブレット プログラミング モデルの特徴の 1 つです。このモデルを最大限に使用するには、開発者はサーブレット コンテナを中間プロキシとして効果的に動作するコンテナを持つ、論理的なサブ ネットワークのように処理する必要があります。SIP サーブレット コンテナは、IMS アーキテクチャの S-CSCF 機能と比較される場合が数多くあります。

 


サーブレット マッピング ルール : オブジェクト、プロパティ、条件

サブレット マッピング ルールはサービス開発者が定義し、詳細情報はアプリケーションのデプロイメント記述子で説明されます。デプロイメント記述子とは、Oracle Communications Converged Application Server でデプロイされた SAR アーカイブ ファイルにあるドキュメントです。アプリケーション (SIP/HTTP アプリケーション) のデプロイメント記述子に 1 つ以上のサーブレット マッピング ルールを定義することができます。この場合、これらのルールをデプロイメント記述子に定義された順番で適用する必要があります。

以下の図は、一般的なデプロイメント記述子にある単純なサーブレット マッピング ルールのサンプルを示します。

注意 : サーブレット マッピング ルールは、処理される SIP メッセージのコンテンツに全面的に関与しています。サービス トリガ ポイントとしてリクエストが受信された実際の IP アドレスおよびポート番号に関する情報は、SIP メッセージのリクエスト URI の情報と一致しない限り、使用できません。

コード リスト A-1 に示すサーブレット マッピング ルールは、以下のブール式を説明します。

(Method="INVITE" OR Method = "MESSAGE" OR Method="SUBSCRIBE") AND
(Method="INVITE" OR Method = "MESSAGE" OR (NOT Header = "from" Match = "Bob"))
注意 : これは、サブレット マッピング ルールとして表された 3GPP TS 29.228 Annex C にある、最初のフィルタ条件のサンプルに使用した論理条件と同じです。
コード リスト A-1 サーブレット マッピング ルールの例
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<pattern>
	<and>      	
	<or>
		<equal>
		<var>request.method</var>
		<value>INVITE</value>
		</equal>
		 	<equal>
		<var>request.method</var>
		<value>MESSAGE</value>
		 	</equal>
		 <equal>
		<var>request.method</var>
		<value>SUBSCRIBE</value>
		 	</equal>
	</or>
 	<or>
		<equal>
		<var>request.method</var>
		<value>INVITE</value>
		</equal>
		 	<equal>
		<var>request.method</var>
		<value>MESSAGE</value>
		 	</equal>
		<not>
		 	<equal>
			<var>request.from.display-name</var>
			<value>Bob</value>
		 	</equal>
		</not>
	</or>
	</and>
</pattern>      
</servlet-mapping>

サポート対象のサービス トリガ ポイント

サービス トリガ ポイントは、SIP リクエストの属性であり、サブレット マッピング ルールで評価することができます。詳細については、JSR 116 仕様の「節 11.1: トリガのルール」を参照してください。

リクエスト オブジェクト

リクエスト オブジェクトは、Java で表した SIP リクエストです。

URI:

SipURI (URI を拡張):

TelURL (URI を拡張):

アドレス:

条件と論理的なコネクタ

equal および contains のオペレータは、比較処理を行う場合、オプションとして大文字と小文字の区別をしない設定ができます。デフォルトでは、大文字と小文字は区別されます。


  ページの先頭       前  次