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
![Page 1: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/1.jpg)
Model programowania aplikacji
komunikacyjnych przy użyciu Java SIP
Servlet APIWaldek Kot
![Page 2: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/2.jpg)
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
![Page 3: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/3.jpg)
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
![Page 4: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/4.jpg)
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
![Page 5: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/5.jpg)
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
![Page 6: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/6.jpg)
Przykład komunikatu SIP (Request)
![Page 7: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/7.jpg)
Przykład komunikatu SIP (Response)
![Page 8: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/8.jpg)
SIP Request – wybrane metody
• REGISTER• INVITE• ACK• OPTIONS• BYE• CANCEL
• INFO• MESSAGE• SUBSCRIBE• NOTIFY• PRACK• UPDATE• PUBLISH
• ....
![Page 9: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/9.jpg)
SIP Request – wybrane nagłówki (headers)
• To• From• Contact• CSeq• Call-ID• Via• Expires• Max-Forwards• Content-Type• Content-Length• Record-Route• ....
![Page 10: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/10.jpg)
Typowa sesja komunikacyjna
![Page 11: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/11.jpg)
Inny przykład sesji (B2BUA)
![Page 12: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/12.jpg)
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
![Page 13: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/13.jpg)
Miejsce SIP Servlet
Transport Layer
TCP UDP TLS
Message Parser (Coder/Decoder)
Transaction Layer
Dialog Management Layer
Stos SIP
(niskopoziomowa
sygnalizacja)
![Page 14: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/14.jpg)
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
![Page 15: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/15.jpg)
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
![Page 16: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/16.jpg)
Demo – Hello World SIP
![Page 17: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/17.jpg)
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)
![Page 18: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/18.jpg)
Model obiektów SIP Servlet
![Page 19: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/19.jpg)
Klasa SIP Servlet
![Page 20: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/20.jpg)
Klasy SipServletRequest i SipServletResponse
![Page 21: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/21.jpg)
Klasa SipFactory
![Page 22: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/22.jpg)
Sesje (2 rodzaje)
![Page 23: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/23.jpg)
URI i adresy
![Page 24: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/24.jpg)
Proxy
![Page 25: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/25.jpg)
Timers
![Page 26: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/26.jpg)
Mapowanie (w sip.xml)
![Page 27: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/27.jpg)
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
![Page 28: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/28.jpg)
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, ...
![Page 29: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/29.jpg)
DemoAplikacja SIP
![Page 30: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/30.jpg)
DemoAplikacja konwergentna
„Click-to-make-a-conference”
![Page 31: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/31.jpg)
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
![Page 32: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API](https://reader036.fdocument.pub/reader036/viewer/2022062309/56813a25550346895da202e5/html5/thumbnails/32.jpg)
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