Servlets SIP

Un servlet SIP (Session Initiation Protocol) es un componente de aplicación basado en Java que el contenedor de servlets SIP gestiona y que realiza la señalización SIP. Los servlets SIP interactúan con los clientes intercambiando mensajes de solicitud y respuesta a través del contenedor de servlets.

La especificación del servlet SIP 1.0 (JSR 116) se ha convertido en un estándar a través de JSR (Java™ Specification Request) 116. La idea que hay detrás de la especificación es proporcionar una interfaz de programación de aplicaciones (API) de Java similar a los servlets HTTP, que proporciona un modelo de programación SIP fácil de utilizar. Del mismo modo que el popular modelo de programación HTTP, se ha limitado una parte de la flexibilidad para optimizar su facilidad de uso y su valor puntual.

No obstante, la API del servlet SIP difiere de muchas maneras de los servlets HTTP debido a que el protocolo es muy diferente. Mientras que SIP es un protocolo de solicitud y respuesta, no necesariamente existe una sola respuesta para cada solicitud individual. Esta complejidad y la necesidad de obtener una solución de alto rendimiento significan que resulta más fácil hacer que los servlets SIP sean asíncronos de forma nativa. Asimismo, a diferencia de los servlets SIP, el modelo de programación para servlets SIP busca facilitar la creación de solicitudes de cliente junto con otra lógica escrita ya que muchas aplicaciones actúan como cliente o como proxy para otros servidores o proxies.

Solicitudes SipServlet

Al igual que los servlets HTTP, cada servlet SIP amplía una clase javax.servlet.sip.SipServlet base. Todos los mensajes entran a través del método de servicio, el cual se puede ampliar. No obstante, debido a que en SIP no hay una correlación de uno a uno entre las solicitudes y las respuestas, se recomienda ampliar los métodos doRequest o doResponse. Cuando se amplían los métodos doRequest o doResponse, es importante invocar el método ampliado para que se complete el proceso.

Cada método de solicitud, que debe soportar la especificación tiene un método doxxx del mismo modo que HTTP. En HTTP, existen métodos como, por ejemplo, doGet y doPost para las solicitudes GET y POST. En SIP, existen los métodos doInvite, doAck, doOptions, doBye, doCancel, doRegister, doSubscribe, doNotify, doMessage, doInfo y doPrack para cada solicitud SIP.

A diferencia del servlet HTTP, los servlets SIP tienen métodos para cada uno de los tipos de respuestas que están soportados. Por lo tanto, los servlets SIP incluyen las respuestas doProvisionalResponse, doSuccessResponse, doRedirectResponse y doErrorResponse. Específicamente, se utilizan las respuestas provisionales (respuestas 1xx) para indicar el estado, las respuestas satisfactorias (respuestas 2xx) para indicar que una transacción se realizado satisfactoriamente, las respuestas de redirección (respuestas 3xx) para redirigir al cliente a un recurso o entidad que se ha movido y las respuestas de error (respuestas 4xx, 5xx y 6xx) para indicar una anomalía o una condición de error específica. Estos tipos de mensajes de respuesta son similares a HTTP, pero debido a que el modelo de programación del servlet SIP incluye un modelo de programación de cliente, es necesario que las respuestas también se manejen de modo programado.

Clarificaciones de JSR 116

JSR 289 ha realizado algunas clarificaciones sobre JSR 116, como se indica a continuación:
  • JSR 289 Sección 4.1.3: Campo de la cabecera de contacto
  • JSR 289 Sección 5.2: Estado de transacción implícita
  • JSR 289 Sección 5.8: Accesibilidad de mensajes de servlet SIP

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csip_servlet
File name: csip_servlet.html