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

Upload: ethel

Post on 05-Jan-2016

57 views

Category:

Documents


0 download

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

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