1 / 37

SIP Servlet 1.x (JSR 116/289)

SIP Servlet 1.x (JSR 116/289). Javier Alexander Hurtado Ingeniero en Electrónica y Telecomunicaciones javhur@unicauca.edu.co. Servicios avanzados. Un Servidor SIP actúa como una plataforma para la creación de servicios

dannon
Télécharger la présentation

SIP Servlet 1.x (JSR 116/289)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SIP Servlet 1.x (JSR 116/289) Javier Alexander Hurtado Ingeniero en Electrónica y Telecomunicaciones javhur@unicauca.edu.co

  2. Servicios avanzados • Un Servidor SIP actúa como una plataforma para la creación de servicios • Extiende la funcionalidad básica de un Servidor Proxy SIP (nuevos servicios) • El API SIP Servlet propone un modelo para la creación de nuevos servicios sobre SIP • SIP Servlet 1.0 (JSR 116), SIP Servlet 1.1 (JSR 289) • http://jcp.org/en/jsr/detail?id=116 y http://jcp.org/en/jsr/detail?id=289 Más información: JSR 116 – SIP Servlet

  3. Historia • Sip Servlet 1 (Marzo de 2003) • Expert Group • 8x8, ”Dynamicsoft Inc.”, Ericsson Inc., IBM, Nokia Corporation, Siemens AG, Sun Microsystems Inc., Ubiquity Software Corporation • SIP Servlet 1.1 (Marzo de 2006) • Expert Group • 8x8, Apache Software Foundation, Appium Technologies AB, AT&T, BayPackets Inc., BEA Systems, Cingular Wireless, Cisco Systems, Ericsson AB, Fraunhofer-Gesellschaft Institute FIRST, Fujitsu Limited, IBM, JBoss Inc., Mailvision LTD, Netcentrex, Nexcom Systems, Oracle, Orange France SA, Sun Microsystems Inc., T-Mobile International AG & Co. KG, Telcordia Technologies Inc., Telecom Italia, Ubiquity Software Corporation, Voztelecom Sistemas S.L.

  4. Conceptos básicos • Aplicaciones de Telefonía convencional son exigentes y complejas (tiempo/costo) • SIP Servlet provee una especificación y un conjunto de interfaces neutral que soporta una plataforma abierta y consistente sobre la cual desarrollar y publicar servicios portables • Extiende el modelo HTTP Servlet • Proxy Server estándar puede ser la base de un Servidor de AplicacionesSIP

  5. HTTP Servlet vs SIP Servlet • Conceptos comúnes • Método service() • Archivos de publicación JAR • Descriptores de despliegue • Diferencias • Concepto de proxy que puede iniciar nuevas solicitudes • Asíncrono • Soporta composición

  6. Servidor de Aplicaciones SIP • Implementa un Container SIP soporte para SIP Servlets • Carga e inicializa al Servlet e invoca los métodos apropiados cuando un mensaje SIP llega • Cuando se detiene, destruye todos los SIP Servlets • Ejecuta algunas de las funciones de un contenedor HTTP Servlet Fuente: NIST

  7. Componentes SIP Servlet • Servlet Container • Entorno de ejecución de los Servlets • Servlets • Clase con un método service() compilada en un Servlet Archive File (SAR) • Deployment Descriptor • Archivo XML con información de configuración y reglas de mapeo de mensajes

  8. Modelo básico SIP Servlet • Localización del SIP Server y el Servlet engine: • En la misma Java Virtual Machine • Diferentes procesos, el mismo host • Diferentes hosts: 1:1, 1:n, n:1, n:m

  9. Enrutamiento de Servicios • Servlet enruta el request a uno o más destinos • Re-envía la respuesta al llamante

  10. Servlet como UAS • Los Servlets pueden rechazar (filtrar) llamadas • Pueden aceptar y configurar flujos multimedia

  11. SipServlet 1 ServletConfig SipServletAdapter Los SIP Servlets Servlets Clases Java extendiendo a javax.servlet.sip.SipServlet e implementa los métodos apropiados. Se empaqueta en un archivo SAR con su Deployment Descriptor.

  12. Herramientas para el Servlet Abstracciones de Servidor Servidor SIP, Servlet engine, información de localización SipFactory ContactDatabase SipServletContext

  13. Manejo de mensajes SIP Mensajes SIP Clases para manipulación de mensajes 1 SipMessage SipTransaction SipRequest SipResponse

  14. Manejo de direcciones SIP Direccionamiento Manipulación de direcciones SIP (SIP-URIs) 1 SipAddress SipURL SipContact

  15. Eventos / Métodos SIP • SipServlet recibe mensajes a través del método service() que a su vez llama a doRequest() o doResponse() respectivamente y por último, estos invocan a uno de los siguiente métodos: • doInvite() - doAck() • doOptions() - doBye() • doCancel() - diRegister() • doSubscribe() - doNotify() • doMessage() - doInfo() • doProvisionalResponse() Para respuestas SIP 1xx • doSucessResponse() Para respuestas SIP 2xx • doRedirectResponse() Para respuestas SIP 3xx • doErrorResponse() Para respuestas SIP 4xx, 5xx y 6xx

  16. Algunas clase del API • ServletConfig: información de configuración • ServletContext: servlet  container • SipServletMessage: aspectos comúnes • SipServletRequest: SIP request message • SipServletResponse: SIP response message • SipFactory: interface • SipAddress: cabeceras From y To • SipSession: sesión SIP (igual que RFC3261) • SipApplicationSession: como HttpSession • Proxy: operación de Proxy y control sobre él

  17. Estructura de directorios

  18. sip.xml – Deployment Descriptor • El root element es sip-app • Solicitudes mapeadas hacia los servlets sip basadas en un lenguaje de reglas • No tienen significado algunas etiquetas como: jsp-file, taglib, welcome-file-list • El modelo de composición de SIP servlet le permite a muchas aplicaciones ejecutarse a partir de unsoloRequest

  19. Elementos del Deployment Descriptor • Parámetros inciales del ServletContext • Configuración de Sesión • Definiciones de Servlets • Mapeo de Servlets • Application lifecycle listener classes • Manejador de Errores • Definiciones y mapeo de Filtros • Seguridad

  20. DOCTYPE / DTD de sip.xml • <!DOCTYPE sip-app PUBLIC"-//Java Community Process//DTD SIP Application 1.0//EN" "http://www.jcp.org/dtd/sip-app_1_0.dtd"> • <!ELEMENTsip-app (icon?, display-name?, description?, distributable?, context-param*, listener*, servlet*, servlet-mapping*, proxy-config?, session-config?, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>

  21. Ejemplo: sip.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sip-app PUBLIC"-//Java Community Process//DTD SIP Application 1.0//EN“ "http://www.jcp.org/dtd/sip-app_1_0.dtd"> <sip-app> <display-name>A Simple SIP Application</display-name> <context-param> <param-name>vxml-server</param-name> <param-value>sip:server17@vxml.example.com</param-value> </context-param> <servlet> <servlet-name>WeatherService</servlet-name> <servlet-class>com.example.Weather</servlet-class> <init-param> <param-name>weather-server</param-name> <param-value>http://example.com/weather</param-value> </init-param> </servlet>

  22. Ejemplo: sip.xml <servlet-mapping> <servlet-name>WeatherService</servlet-name> <pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal> <equal> <var>request.to.uri.user</var> <value>weather</value> </equal> </and> </pattern> </servlet-mapping> <session-config> <session-timeout>15</session-timeout> </session-config> </sip-app>

  23. Patrones de mapeo • Elemento pattern: puede contener • and (cond.), or (cond.), not (cond.), equal (var, value), contains (var, value), exists (var), subdomain-of (var, value) <equal> <var>request.method</var> <value>INVITE</value> </equal> <contains> <var>request.to.uri.user</var> <value>javhur</value> </contains>

  24. Lenguaje de reglas • Define los siguientes objetos: • Request: la solicitud SIP punto de entrada a la regla. • method: el método SIP • uri: la request URI (puede ser SipURI o TelURI) • from: un objeto Address que representa la cabecera From • to: un objeto Address que representa la cabecera To • URI • scheme: el esquema URI • SipURI(hereda de URI) • scheme: puede ser “sip” o “sips” • user: la parte de usuario de la SipURI • host: la parte de host de la SipURI • port: número del puerto en formato decimal • tel: número telefónico si existe • param.name: un parámetro dentro del URI SIP

  25. Lenguaje de reglas • Más objetos: • TelURI(hereda de URI) • scheme: siempre será “tel” • tel: el nombre del suscriptor • param.name: un parámetro dentro de la URL • Address • uri: una SipURI o un TelURI • display-name: la parte del display-name de las cabeceras From o To

  26. Ejemplo (Variables) • Un mensaje INVITE de ejemplo INVITEsip:watson@boston.bell-tel.com SIP/2.0 From: A. Bell <sip:a.g.bell@bell-tel.com>;tag=3pcc To: T. Watson <sip:watson@bell-tel.com> … • Algunas variables

  27. Ejemplo (Variables)

  28. Ejemplo (reglas) <pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal> <not> <contains ignore-case="true"> <var>request.from.display-name</var> <value>bell</value> </contains> </not> <subdomain-of> <var>request.from.uri.host</var> <value>bell-tel.com</value> </subdomain-of> </and> </pattern> El resultado de la evaluación de esta regla es false Analizar! Regla1 = True Regla2 = False Regla3 = True

  29. Ejemplo 1 (source) • El Servlet espera por Mensajes INVITE, y reenvía el INVITE al Agente de Usuario de destino public class SampleServlet extends SipServlet { publicvoid doInvite(SipServletRequest req) throws ServletException, java.io.IOException { try { req.send(); } catch (IOException e) { thrownew ServletException("Could not send request", e); } } }

  30. Ejemplo 1 (sip.xml) • Deployment Descriptor <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sip-app PUBLIC"-//Java Community Process//DTD SIP Application 1.0//EN“ "http://www.jcp.org/dtd/sip-app_1_0.dtd"> <sip-app> <display-name>A Simple SIP Application</display-name> <servlet> <servlet-name>HolaSip</servlet-name> <display-name>HolaSip</display-name> <description>HolaSip</description> <servlet-class>sat.HolaSip</servlet-class> </servlet> <servlet-mapping> <pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal>

  31. Ejemplo 1 (sip.xml) • Deployment Descriptor <not> <contains ignore-case="true"> <var>request.from.display-name</var> <value>bell</value> </contains> </not> <subdomain-of> <var>request.from.uri.host</var> <value>bell-tel.com</value> </subdomain-of> </and> </pattern> </servlet-mapping> </sip-app>

  32. Ejemplo 2 • Comportamiento de Proxy • El Servlet actúa como un Proxy • Modo Supervisado permite ver las respuestas • Modo RecordRoute permite ver ACK y BYE public void doInvite(SipServletRequest req) throws ServletException, IOException { Proxy p = req.getProxy(true); p.setSupervised(true); p.setRecordRoute(true); System.out.println("Proxying request: " + req.getRequestURI()); p.proxyTo(req.getRequestURI()); }

  33. Productos comerciales • Ubiquity Software • Ubiquity SIP Application Server (Runtime y Development Tools) • MicroMethod Technologies • SIPMethod Application Server 1.0 Released – Marzo 2006

  34. Alternativas a SIP Servlet • CPL: • Simple y seguro – usado para (no confiables) usuarios finales • SIP CGI: • Basedo en HTTP CGI y similar en alcance a SIP Servlets • Parlay • Permite a servidores de aplicaciones externos a un servidor SIP, controlar llamadas • JAIN: • Definido bajo el Java Community Process

  35. Beneficios del modelo Servlet • Poderoso: • Acceso completo a señalización SIP • Performance: • No necesita crear nuevos procesos por cada Request • El mismo Servlet puede manejar muchos Requests simultáneamente • Seguro: revisión de tipos; no usa punteros; manejo de excepciones • Conveniencia: • Alto nivel de abstracción • Integration suave con servidores: logging, seguridad, base de datos de localización

  36. Beneficios del modelo Servlet • El modelo del ciclo de vida de los Servlets permite • Mantener el estado, p.e. conexiones a bases de datos • Manajar Timers • Acceso a un amplio rango de APIs, p.e. • JNDI para acceso a directorio • JDBC para acceso a bases de datos • JMF/FMJ para manejo de flujos multimedia, p.e. codecs y RTP • El speech API • JavaMail • EJBs • HTTP Servlets

  37. ¿Preguntas? ¡Gracias por su atención! javhur@unicauca.edu.co

More Related