Model programowania aplikacji komunikacyjnych przy użyciu Java SIP Servlet API
Post on 05-Jan-2016
57 Views
Preview:
DESCRIPTION
Transcript
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) waldemar_kot@gazeta.pl
waldemar.kot@bea.com
top related