このページでは、SIP サーブレットについて説明します。
SIP サーブレット 1.0 仕様 (JSR 116) は、 Java Specification Request (JSR) 116 によって標準化されています。 この仕様の理念は、HTTP サーブレットに類似した Java アプリケーション・ プログラミング・インターフェース (API) を提供することによって、 使いやすい SIP プログラミング・モデルを実現することにあります。 一般的な HTTP サーブレット・ プログラミング・モデルと同様に、 操作性と価値実現までの時間を最適化するために、 柔軟性がある程度制限されます。
しかし、SIP サーブレット API は、 HTTP サーブレットとは異なる点が多数あります。 それは、プロトコルが大きく違うからです。 SIP は、要求応答型プロトコルですが、1 つの要求に対して、 必ずしも応答が 1 つだけとは限りません。 このような複雑さと、 ハイパフォーマンスのソリューションへの ニーズが理由となって、SIP サーブレットそのものを非同期にする方が 容易であるとされていました。 また、HTTP サーブレットとは異なり、SIP サーブレットの プログラミング・モデルでは、 作成される他のロジックと並行して、 クライアント要求の作成を容易にする試みがなされました。 これは、アプリケーションの多くが、 他のサーバーやプロキシーへの クライアントやプロキシーとして機能するためです。
SipServlet 要求
HTTP サーブレットと同様に、各 SIP サーブレットは、 基本となる javax.servlet.sip.SipServlet クラスを拡張します。 すべてのメッセージは、拡張可能なサービス・メソッドを介して着信します。 しかし SIP には、応答に対する 1 対 1 の要求のマッピングがありません。 そこで、代わりに doRequest または doResponse メソッドを 拡張するという方法をお勧めします。 doRequest または doResponse メソッドを拡張する際は、 拡張メソッドを呼び出して処理を完了することが重要です。
仕様でサポートされる必要がある各要求メソッドには、 HTTP の場合と同様に doxxx メソッドがあります。 HTTP では、doGet および doPost のような メソッドは、GET および POST 要求のために存在しています。 SIP では、各 SIP 要求メソッドに対する、doInvite、doAck、doOptions、doBye、doCancel、doRegister、doSubscribe、doNotify、doMessage、doInfo、 および doPrack メソッドがあります。
HTTP サーブレットとは異なり、SIP サーブレットは、 サポートされる応答タイプごとのメソッドを持ちます。 したがって、SIP サーブレットには、doProvisionalResponse、 doSuccessResponse、doRedirectResponse、doErrorResponse などの 各種応答があります。 具体的には、暫定応答 (1xx 応答) は、状況を、 成功応答 (2xx 応答) は、トランザクションの正常終了を、 リダイレクト応答 (3xx 応答) は、 移動したリソースやエンティティーへのクライアントのリダイレクトを、 エラー応答 (4xx、5xx、6xx 応答) は、失敗や特定のエラー状態を、 それぞれ示すのに使用されます。 これらの応答メッセージのタイプは、HTTP に類似して いますが、SIP サーブレットのプログラミング・モデルには、 クライアント・プログラミング・モデルが組み込まれているため、 応答をプログラマチックに処理することも必要となります。