Liberty の SIP SipServletRequest クラスと SipServletResponse クラス
SipServletRequest クラスと SipServletResponse クラスは、Web アプリケーション開発時に使用される HttpServletRequest クラスと HttpServletResponse クラスに似ています。
各クラスにより、SIP メッセージのヘッダーにアクセスしてそれらを操作することができます。 要求と応答の非同期性のために、SipServletRequest クラスは、要求に対する新しい応答も作成します。 doInvite メソッドを拡張したとき、SipServletRequest クラスのみがメソッドに渡されます。 クライアントに応答を送信するには、Request オブジェクトで createResponse メソッドを呼び出して、以下の例に示したように応答を作成する必要があります。
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//send back a provisional Trying response
SipServletResponse resp = req.createResponse(100);
resp.send();
非同期性のため、SIP サーブレットは複雑に見える可能性がありますが、 前のコード・サンプルと同じぐらい簡単なもので応答をクライアントに送信します。
以下の例は、さらに複雑な SIP サーブレットを示しています。 以下のメソッドを SIP サーブレットに含めると、example.com ドメイン以外からのすべての呼び出しが、サーブレットによってブロックされます。
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//check to make sure that the URI is a SIP URI
if (req.getFrom().getURI().isSipURI()){
SipURI uri = (SipURI)req.getFrom.getURI();
if (!uri.getHost().equals("example.com")) {
//send forbidden response for calls outside domain
req.createResponse(SipServletResponse.SC_FORBIDDEN).send();
return;
}
}
//proxy all other requests on to their original destination
req.getProxy().proxyTo(req.getRequestURI);
}
これらのクラスについて詳しくは、SIP Servlet Specification 1.1、JSR 289 を参照してください。