Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API
description
Transcript of Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API
Model programowania aplikacji
komunikacyjnych przy użyciu Java SIP
Servlet APIWaldek 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
11: Media (RTP)
Registrar Server
UserAgent
UserAgent
Redirect Server
Proxy Server
Proxy Server
5: INVITE
8: OK
9: OK
7: OK
3: INVITE
Caller A
Caller B
4: Contact B
10: ACK
Registrar Server
12: BYE
1: REGISTER
2: REGISTER
6: INVITE
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
Transport Layer
TCP UDP TLS
Message Parser (Coder/Decoder)
Transaction Layer
Dialog Management Layer
Stos SIP
(niskopoziomowa
sygnalizacja)
Miejsce SIP Servlet
Transport Layer
TCP UDP TLS
Message Parser (Coder/Decoder)
Transaction Layer
Dialog Management Layer
Stos SIP
SIP Servlet Container
• Obiekty• Request • Response• Message• ...
• Session API• Timer API• Deployment• Listeners
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– 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)
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)
SIP Request SIP Request
SIP Servlet App. 1
SIP Servlet App. 2
SIP Servlet App. 3
Servlet Container
SIP“RequestObject”
SIP“RequestObject”
SIP“RequestObject”
Kompozycja aplikacji
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, ...
DemoAplikacja SIP
DemoAplikacja konwergentna
„Click-to-make-a-conference”
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) [email protected]