`
kyleliu
  • 浏览: 27548 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SIP Servlet 示例之 Call Screen

阅读更多

Screening list:alice@server.test

呼叫流程:

Servlet在doRequest方法中检查UA的URI是否在Screening列表中,如果在,返回603 DECLINE响应。

import java.io.IOException;
import java.util.*;
import javax.servlet.sip.*;
import javax.servlet.*;

public class CallScreen extends SipServlet {

Collection m_screenings;

SipFactory m_sipFactory;

public void init() throws ServletException {
m_screenings = new Vector();
m_sipFactory = (SipFactory) getServletContext().getAttribute(
"javax.servlet.sip.SipFactory");

Enumeration names = getInitParameterNames();
if (names == null) {
return;
}
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
if (name.startsWith("screening-uri")) {
String screeningURI = (String) getInitParameter(name);
try {
SipURI uri = (SipURI) m_sipFactory.createURI(screeningURI);
m_screenings.add(uri);
}
catch (ServletException e) {
}
}
}
}

public void doRequest(SipServletRequest req) throws IOException {
SipURI from = (SipURI) req.getFrom().getURI();
Iterator uris = m_screenings.iterator();
while (uris.hasNext()) {
SipURI uri = (SipURI) uris.next();
if (uri.getHost().equals(from.getHost())) {
SipServletResponse resp = req
.createResponse(SipServletResponse.SC_DECLINE);
try {
resp.send();
}
catch (java.io.IOException e) {
}
return;
}
}
log(req.toString());
// ...
}

public void doResponse(SipServletResponse resp) throws IOException {
log(resp.toString());
// ...
}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics