1 Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet APIWaldek Kot
2 Agenda Dlaczego taki temat ? Krótkie wprowadzenie do protokołu SIPDemo - Hello SIP Servlet World Krótkie wprowadzenie do SIP Servlet API Demo - Przykładowe aplikacje Przydatne narzędzia i informacje Q&A
3 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
4 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
5 Typowa komunikacja w SIPRegistrar 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
6 Przykład komunikatu SIP (Request)
7 Przykład komunikatu SIP (Response)
8 SIP Request – wybrane metodyREGISTER INVITE ACK OPTIONS BYE CANCEL INFO MESSAGE SUBSCRIBE NOTIFY PRACK UPDATE PUBLISH ....
9 SIP Request – wybrane nagłówki (headers)To From Contact CSeq Call-ID Via Expires Max-Forwards Content-Type Content-Length Record-Route ....
10 Typowa sesja komunikacyjna
11 Inny przykład sesji (B2BUA)
12 SIP Server przetwarza komunikaty SIP różne roleproxy 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
13 Miejsce SIP Servlet Dialog Management Layer Transaction Layer Stos SIP(niskopoziomowa sygnalizacja) Message Parser (Coder/Decoder) Transport Layer TCP UDP TLS lallala
14 Miejsce SIP Servlet Obiekty Request Response Message ... Session APITimer API Deployment Listeners SIP Servlet Container Dialog Management Layer Transaction Layer Stos SIP Message Parser (Coder/Decoder) Transport Layer TCP UDP TLS lallala
15 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
16 Demo – Hello World SIP
17 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)
18 Model obiektów SIP Servlet
19 Klasa SIP Servlet
20 Klasy SipServletRequest i SipServletResponse
21 Klasa SipFactory
22 Sesje (2 rodzaje)
23 URI i adresy
24 Proxy
25 Timers
26 Mapowanie (w sip.xml) lallala
27 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
28 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, ...
29 Demo Aplikacja SIP
30 Demo Aplikacja konwergentna „Click-to-make-a-conference”
31 Przydatne informacje SIP Servlet API http://dev2dev.bea.com/wlcp
32 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
33 Waldek Kot (prv) [email protected] [email protected]Dzięki ! Waldek Kot (prv)