例: SIP サーブレットの Proxy サーブレット・クラス
Proxy サーブレット・クラス
最初の INVITE の後、 このアプリケーションは、 後続の SIP メッセージが起こるたびに呼び出されます。 各要求と応答に対して、 このクラスは、アクションと、その送信先または発信元を印刷します。
package com.example;
import java.io.IOException;
import javax.servlet.sip.*;
import java.servlet.ServletException;
public class ProxyServlet extends SipServlet {
public void doInvite(SipServletRequest req)
throws ServletException, java.io.IOException {
//get the Proxy
Proxy p=req.getProxy();
//turn on supervised mode so that all events come through us
//The default on this is true but it is set to emphasize the function.
p.setSupervised(true);
//set record route so we see the ACK, BYE, and OK
p.setRecordRoute(true);
//proxy on the request
p.proxyTo(req.getRequestURI());
}
public void doRequest(SipServletRequest req)
throws ServletException, java.io.IOException {
System.out.println(req.getMethod()+” Request from “+req.getFrom().getDisplayName());
super.doRequest(req);
}
public void doResponse(SipServletResponse resp)
throws ServletException, java.io.IOException {
System.out.println(resp.getReasonPhrase()+” Response from “+resp.getTo().getDisplayName());
super.doResponse(resp);
}
}
Proxy deployment descriptor
<sip-app>
<display-name>ProxyServlet</display-name>
<servlet>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>com.example.ProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<pattern>
<equal>
<var>request.method</var>
<value>INVITE</value>
</equal>
</pattern>
</servlet-mapping>
</sip-app>