330 likes | 506 Views
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
E N D
Model programowania aplikacji komunikacyjnych przy użyciu Java SIPServlet 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
Redirect Server Proxy Server Proxy Server User Agent User Agent Registrar Server Registrar Server Typowa komunikacja w SIP 3: INVITE 4: Contact B 1: REGISTER 5: INVITE 2: REGISTER 8: OK 6: INVITE 9: OK 7: OK 10: ACK 12: BYE Caller A 11: Media (RTP) Caller B
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 • ....
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
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
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
SIP Servlet API • JSR-116 • 2003 r. • wkrótce uaktualnienie JSR-289, m.in. • uściślenia – m.in. „współpraca” sesji HTTP i SIP • kompozycja aplikacji • adnotacje (podobnie jak w HTTP Servlet 2.5)
SIP Request SIP Request Kompozycja aplikacji SIP Servlet App. 1 SIP Servlet App. 2 SIP Servlet App. 3 SIP“RequestObject” SIP“RequestObject” SIP“RequestObject” Servlet Container
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, ...
Przydatne informacje • SIP Servlet API • 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
Dzięki ! Waldek Kot (prv) waldemar_kot@gazeta.pl waldemar.kot@bea.com