Ejemplo: Clase servlet del proxy del servlet SIP
Clase del servlet proxy
Después de la solicitud INVITE inicial, se llamará a esta aplicación en cada mensaje SIP posterior. Para cada solicitud y respuesta, esta clase simplemente imprimirá la acción y el emisor y destinatario.
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 {
//obtener el proxy
Proxy p=req.getProxy();
//activar la modalidad supervisada para que todos los suceso pasen a través de nosotros
//El valor predeterminado es true pero se establece para enfatizar la función.
p.setSupervised(true);
//establecer el direccionamiento del registro para poder ver ACK, BYE y OK
p.setRecordRoute(true);
//enviar la solicitud mediante proxy
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);
}
}
Descriptor de despliegue del proxy
<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>