The SIP servlet is called SimpleProxyServlet, and extends the base SipServlet class and implements the SipErrorListener and Servlet interfaces.
@SipListener
@SipServlet
public class SimpleProxyServlet
extends SipServlet
implements SipErrorListener,Servlet {
/** Creates a new instance of SimpleProxyServlet */
public SimpleProxyServlet() {
}
protected void doInvite(SipServletRequest request)
throws ServletException, IOException {
if (request.isInitial()) {
Proxy proxy = request.getProxy();
proxy.setRecordRoute(true);
proxy.setSupervised(true);
proxy.proxyTo(request.getRequestURI()); // bobs uri
}
System.out.println("SimpleProxyServlet: Got request:\n" + request);
}
protected void doBye(SipServletRequest request) throws
ServletException, IOException {
System.out.println("SimpleProxyServlet: Got BYE request:\n" + request);
super.doBye(request);
}
protected void doResponse(SipServletResponse response)
throws ServletException, IOException {
System.out.println("SimpleProxyServlet: Got response:\n" + response);
super.doResponse(response);
}
// SipErrorListener
public void noAckReceived(SipErrorEvent ee) {
System.out.println("SimpleProxyServlet: Error: noAckReceived.");
}
public void noPrackReceived(SipErrorEvent ee) {
System.out.println("SimpleProxyServlet: Error: noPrackReceived.");
}
}
In SimpleProxyServlet, you override several methods to respond to the main SIP methods.
doInvite- responds to INVITE requests.
In SimpleProxyServlet, upon receiving an INVITE request the servlet will create a javax.servlet.sip.Proxy instance, set some options, and proxy the request to the target SIP server.
doBye- responds to BYTE requests.
In SimpleProxyServlet, the servlet logs a message upon receiving a BYE message, and calls the doBye method of the parent class (javax.servlet.sip.SipServlet).
Because SimpleProxyServlet implements the SipErrorListener interface, it must implement the following methods:
noAckReceived is invoked to notify the application that no ACK message was received for an INVITE transaction.
noPrackReceived is invoked when no PRACK message was received for a previously sent response.