Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

33
Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API Waldek Kot

description

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 - PowerPoint PPT Presentation

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

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

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

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

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

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

Przykład komunikatu SIP (Request)

Page 7: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Przykład komunikatu SIP (Response)

Page 8: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

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

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

Typowa sesja komunikacyjna

Page 11: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Inny przykład sesji (B2BUA)

Page 12: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

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

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

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

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

Demo – Hello World SIP

Page 17: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

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

Model obiektów SIP Servlet

Page 19: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Klasa SIP Servlet

Page 20: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Klasy SipServletRequest i SipServletResponse

Page 21: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Klasa SipFactory

Page 22: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Sesje (2 rodzaje)

Page 23: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

URI i adresy

Page 24: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Proxy

Page 25: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Timers

Page 26: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

Mapowanie (w sip.xml)

Page 27: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

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

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

DemoAplikacja SIP

Page 30: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

DemoAplikacja konwergentna

„Click-to-make-a-conference”

Page 31: Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API

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

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