Exemplo: Classe de Servlet Proxy do Servlet SIP
Classe de Servlet Proxy
Depois do INVITE inicial, esse aplicativo será chamado em cada mensagem SIP subseqüente. Para cada Pedido e e Resposta, essa classe simplesmente imprimirá a ação e de quem ou para quem é.
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 {
//obter o Proxy
Proxy p=req.getProxy();
//ativar o modo supervisionado para que todos os eventos passem por nós
//O padrão para isso é true, mas está configurado para enfatizar a função.
p.setSupervised(true);
//configurar a rota do registro para vermos ACK, BYE e OK
p.setRecordRoute(true);
//proxy no pedido
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>