範例: SIP Servlet SendOnServlet 類別

SendOnServlet 類別是簡式 SIP Servlet ,可執行在每一個 INVITE 上呼叫及從該處傳送要求的基本功能。

SendOnServlet 類別

可以輕鬆插入功能來記載這個邀請要求,或根據某些特定準則來拒絕 INVITE。

package com.example;
import java.io.IOException;
import javax.servlet.sip.*;
import java.servlet.ServletException;
public class SendOnServlet extends SipServlet {
  public void doInvite(SipServletRequest req) 
       throws ServletException, java.io.IOException {
     //send on the request
     req.getProxy().proxyTo(req.getRequestURI);
  }
}

可以變更 doInvite 方法來執行一些動作,例如僅針對某些特定準則拒絕邀請。 在下列範例中,來自 example.com 外部網域的所有要求都會遭到拒絕,並有「禁止」回應。

public void doInvite(SipServletRequest req)
throws ServletException, java.io.IOException {
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, "Calls outside example.com not accepted").send();
return;
	   }
	}
	//proxy all other requests on to their original destination
	req.getProxy().proxyTo(req.getRequestURI());
   }


SendOnServlet deployment descriptor:
<sip-app>
    <display-name>Send-on Servlet</display-name>
    <servlet>
        <servlet-name>SendOnServlet</servlet-name>
        <servlet-class>com.example.SendOnServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>SendOnServlet</servlet-name>
        <pattern>
              <equal>
                <var>request.method</var>
                <value>INVITE</value>
              </equal>
        </pattern>
    </servlet-mapping>
</sip-app>