示例:SIP Servlet 代理 Servlet 类
代理 servlet 类
初始 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>