示例:SIP Servlet SendOnServlet 类
SendOnServlet 类是一个简单的 SIP servlet,它将执行对每个 INVITE 调用的基本功能,并从该处发送请求。
SendOnServlet 类
可以方便地插入函数,以根据某个特定条件记录此 INVITE 请求或拒绝 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 方法以进行特定操作,如根据特定条件直接拒绝 INVITE。在下面的示例中,从 example.com 外的域发出的所有请求都将被拒绝,并发出 Forbidden 响应。
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>