Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API Waldek Kot
Agenda Dlaczego taki temat ? Krótkie wprowadzenie do protokołu SIP Demo - Hello SIP Servlet World Krótkie wprowadzenie do SIP Servlet API Demo - Przykładowe aplikacje Przydatne narzędzia i informacje Q&A
Dlaczego taki temat ? Trochę inne zastosowanie Java i pochodnych technologii Przełamać opory przed przyglądnięciem się „technologii telekomunikacyjnej” rozumiejąc jak się buduje aplikacje web, już wiecie jak budować aplikacje komunikacyjne Kariera na horyzoncie są duże projekty także w Polsce operatorzy dostawcy technologii i usług ciekawe konkursy
Protokół SIP Internetowy protokół do zarządzania sesjami komunikacyjnymi multi-media Protokół sygnalizacyjny przynajmniej w dużym stopniu Ma wiele wspólnego z HTTP i SMTP Współpracuje też z innymi znanymi: IP, TCP/UDP/SCTP, DNS, RTP, SDP, NAT, ... z HTTP: model client-server (request-response), stosowanie URI, statusy Z SMTP: protokół tekstowy, nagłówki Ale w odróżnieniu od HTTP, m.in.: jest asynchroniczny (zdarzeniowy) peer-to-peer (np. serwer może inicjować komunikację) wiele odpowiedzi do jednego żądania transakcyjność wbudowana maszyna stanów SIP nie jest protokołem transportowym nie zarządza przesyłaniem mediów Bardzo bogata rodzina specyfikacji (kilkaset) Główne specyfikacje: RFC3621 do 3265 Bardzo duże wsparcie operatorów, dostawców sprzętu i oprogramowania
Typowa komunikacja w SIP Registrar Server Redirect Server Registrar Server 3: INVITE Proxy Server 4: Contact B 1: REGISTER Proxy Server 5: INVITE 8: OK 2: REGISTER 9: OK 6: INVITE User Agent 7: OK 10: ACK User Agent 12: BYE Caller A 11: Media (RTP) Caller B lallala
Przykład komunikatu SIP (Request)
Przykład komunikatu SIP (Response)
SIP Request – wybrane metody REGISTER INVITE ACK OPTIONS BYE CANCEL INFO MESSAGE SUBSCRIBE NOTIFY PRACK UPDATE PUBLISH ....
SIP Request – wybrane nagłówki (headers) To From Contact CSeq Call-ID Via Expires Max-Forwards Content-Type Content-Length Record-Route ....
Typowa sesja komunikacyjna
Inny przykład sesji (B2BUA)
SIP Server przetwarza komunikaty SIP różne role proxy registrar redirect najbardziej elastyczny –> SIP application server programowalny kontener dla aplikacji SIP często udostępniający też inne modele (web, J2EE/JEE) integracja różnych „światów” są różne modele budowy aplikacji SIP (w tym non-Java) SIP Servlet API (JSR-116 i wkrótce JSR-289) SIP CGI JAIN SLEE JAIN SIP ... SIP app server wspiera programistę Programowanie na wyższym poziomie abstrakcji Zajmuje się złożonymi aspektami (transakcje, security, ...) Skalowalność, niezawodność, wysoka dostępność, ... Zarządzanie Możliwość integracji z innymi systemami/technologiami
Miejsce SIP Servlet Dialog Management Layer Transaction Layer Stos SIP (niskopoziomowa sygnalizacja) Message Parser (Coder/Decoder) Transport Layer TCP UDP TLS lallala
Miejsce SIP Servlet Obiekty Request Response Message ... Session API Timer API Deployment Listeners SIP Servlet Container Dialog Management Layer Transaction Layer Stos SIP Message Parser (Coder/Decoder) Transport Layer TCP UDP TLS lallala
Servlet API – Przypomnienie (?) Request / Response np. HTTP request / HTTP response Kontener jest hostem dla servlet’ów Mapowanie URI do servletów ServletConfig ServletContext Sesje bo HTTP jest bezstanowy
Demo – Hello World SIP
SIP Servlet API JSR-116 wkrótce uaktualnienie JSR-289, m.in. 2003 r. uściślenia – m.in. „współpraca” sesji HTTP i SIP kompozycja aplikacji adnotacje (podobnie jak w HTTP Servlet 2.5)
Model obiektów SIP Servlet
Klasa SIP Servlet
Klasy SipServletRequest i SipServletResponse
Klasa SipFactory
Sesje (2 rodzaje)
URI i adresy
Proxy
Timers
Mapowanie (w sip.xml) lallala
Kompozycja aplikacji SIP Request SIP Request SIP “Request Object” SIP Servlet App. 1 SIP Servlet App. 2 SIP Servlet App. 3 SIP “Request Object” SIP “Request Object” SIP “Request Object” SIP Request SIP Request Servlet Container lallala
Przydatne narzędzia IDE SIP app server (z kontenerem SIP Servlet) BEA WebLogic SIP Server IBM WebSphere 6.x takża ma prosty kontener SIP Servlet Glassfish – projekt SailFin – wciąż w fazie beta/alpha ... Wireshark Telefony Softphone: np.: X-lite, SJ Phone, ... „Hard”: np.: Grandstream SIP client (np. Nokia E61i) SIPp – przydatne do testowania, wysyła i przetwarza komunikaty SIP Opcje: media servers, gateways, ...
Demo Aplikacja SIP
Demo Aplikacja konwergentna „Click-to-make-a-conference”
Przydatne informacje SIP Servlet API http://dev2dev.bea.com/wlcp http://jcp.org/en/jsr/detail?id=116 http://jcp.org/en/jsr/detail?id=289 http://dev2dev.bea.com/wlcp http://www.tech-invite.com http://imsinkubator.pl
Podsumowanie Dlaczego taki temat ? Krótkie wprowadzenie do protokołu SIP Demo - Hello SIP Servlet World Krótkie wprowadzenie do SIP Servlet API Demo - Przykładowe aplikacje Przydatne narzędzia i informacje
Waldek Kot (prv) waldemar_kot@gazeta.pl waldemar.kot@bea.com Dzięki ! Waldek Kot (prv) waldemar_kot@gazeta.pl waldemar.kot@bea.com