Ejemplo: Clase del servlet SIP SendOnServlet
La clase SendOnServlet es un servlet SIP sencillo que puede realizar la función básica de ser llamada en cada INVITE y enviar la solicitud a partir de ahí.
Clase SendOnServlet
La función se puede insertar fácilmente para anotar cronológicamente esta solicitud INVITE o rechazar la solicitud INVITE según algún criterio específico.
package com.example;
import java.io.IOException;
import javax.servlet.sip.*;
import java.servlet.ServletException;
public class SendOnServlet extends SipServlet {
public void doInvite(SipServletRequest req)
throws ServletException, java.io.IOException {
//enviar la solicitud
req.getProxy().proxyTo(req.getRequestURI);
}
}
El método doInvite puede alterarse para hacer algo como, por ejemplo, rechazar la solicitud INVITE simplemente para un criterio específico. En el ejemplo siguiente, todas las solicitudes de dominios que estén fuera de example.com se rechazarán con una respuesta Forbidden.
public void doInvite(SipServletRequest req)
throws ServletException, java.io.IOException {
if (req.getFrom().getURI().isSipURI()){
SipURI uri = (SipURI)req.getFrom.getURI();
if (!uri.getHost().equals(“example.com”)) {
//enviar respuesta prohibida para llamadas fuera del dominio
req.createResponse(SipServletResponse.SC_FORBIDDEN, “No se aceptan llamadas fuera de example.com”).send();
return;
}
}
//enviar mediante proxy las otras solicitudes a su destino original
req.getProxy().proxyTo(req.getRequestURI());
}
SendOnServlet deployment descriptor:
<sip-app>
<display-name>Send-on Servlet</display-name>
<servlet>
<servlet-name>SendOnServlet</servlet-name>
<servlet-class>com.example.SendOnServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SendOnServlet</servlet-name>
<pattern>
<equal>
<var>request.method</var>
<value>INVITE</value>
</equal>
</pattern>
</servlet-mapping>
</sip-app>