最初の 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>