Clases SIP SipServletRequest y SipServletResponse en Liberty
Las clases SipServletRequest y SipServletResponse son similares a las clases HttpServletRequest y HttpServletResponse que se utilizan al desarrollar aplicaciones web.
Cada clase le proporciona la capacidad de acceder a las cabeceras del mensaje SIP y manipularlas. Debido a la naturaleza asíncrona de las solicitudes y respuestas, la clase SipServletRequest también crea respuestas nuevas para las solicitudes. Cuando se amplía el método doInvite, solo se pasa la clase SipServletRequest al método. Para enviar una respuesta al cliente, debe llamar al método createResponse en el objeto Solicitud para crear una respuesta, tal como se indica en el ejemplo siguiente:
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//devolver una respuesta del tipo "intentando" provisional
SipServletResponse resp = req.createResponse(100);
resp.send();
Debido a su naturaleza asíncrona, los servlets SIP pueden parecer complicados; sin embargo, es algo tan sencillo como si el código de ejemplo anterior envía una respuesta a un cliente.
El ejemplo anterior muestra un servlet SIP más complejo. Con el método siguiente incluido en un servlet SIP, el servlet bloquea todas las llamadas que no proceden del dominio example.com.
protected void
doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//consultar para asegurarse de que el URI es un URI SIP
if (req.getFrom().getURI().isSipURI()){
SipURI uri = (SipURI)req.getFrom.getURI();
if (!uri.getHost().equals("example.com")) {
//send forbidden response for calls outside domain
req.createResponse(SipServletResponse.SC_FORBIDDEN).send();
return;
}
}
//enviar mediante proxy todas las demás solicitudes en
su destino original
req.getProxy().proxyTo(req.getRequestURI);
}
Si desea más información sobre estas clases, consulte la especificación de servlet SIP 1.1, JSR 289.