Title: Model programowania aplikacji komunikacyjnych przy uzyciu Java SIP Servlet API
1Model programowania aplikacji komunikacyjnych
przy uzyciu Java SIPServlet API
2Agenda
- Dlaczego taki temat ?
- Krótkie wprowadzenie do protokolu SIP
- Demo - Hello SIP Servlet World
- Krótkie wprowadzenie do SIP Servlet API
- Demo - Przykladowe aplikacje
- Przydatne narzedzia i informacje
- QA
3Dlaczego taki temat ?
- Troche inne zastosowanie Java i pochodnych
technologii - Przelamac opory przed przygladnieciem sie
technologii telekomunikacyjnej - rozumiejac jak sie buduje aplikacje web, juz
wiecie jak budowac aplikacje komunikacyjne - Kariera
- na horyzoncie sa duze projekty
- takze w Polsce
- operatorzy
- dostawcy technologii i uslug
- ciekawe konkursy
4Protokól SIP
- Internetowy protokól do zarzadzania sesjami
komunikacyjnymi - multi-media
- Protokól sygnalizacyjny
- przynajmniej w duzym stopniu
- Ma wiele wspólnego z HTTP i SMTP
- Wspólpracuje tez z innymi znanymi IP,
TCP/UDP/SCTP, DNS, RTP, SDP, NAT, ... - z HTTP model client-server (request-response),
stosowanie URI, statusy - Z SMTP protokól tekstowy, naglówki
- Ale w odróznieniu od HTTP, m.in.
- jest asynchroniczny (zdarzeniowy)
- peer-to-peer (np. serwer moze inicjowac
komunikacje) - wiele odpowiedzi do jednego zadania
- transakcyjnosc
- wbudowana maszyna stanów
- SIP nie jest protokolem transportowym
- nie zarzadza przesylaniem mediów
- Bardzo bogata rodzina specyfikacji (kilkaset)
- Glówne specyfikacje RFC3621 do 3265
- Bardzo duze wsparcie operatorów, dostawców
sprzetu i oprogramowania
5Typowa komunikacja w SIP
3 INVITE
4 Contact B
1 REGISTER
5 INVITE
2 REGISTER
8 OK
6 INVITE
9 OK
7 OK
10 ACK
12 BYE
Caller A
11 Media (RTP)
Caller B
6Przyklad komunikatu SIP (Request)
7Przyklad komunikatu SIP (Response)
8SIP Request wybrane metody
- REGISTER
- INVITE
- ACK
- OPTIONS
- BYE
- CANCEL
- INFO
- MESSAGE
- SUBSCRIBE
- NOTIFY
- PRACK
- UPDATE
- PUBLISH
- ....
9SIP Request wybrane naglówki (headers)
- To
- From
- Contact
- CSeq
- Call-ID
- Via
- Expires
- Max-Forwards
- Content-Type
- Content-Length
- Record-Route
- ....
10Typowa sesja komunikacyjna
11Inny przyklad sesji (B2BUA)
12SIP Server
- przetwarza komunikaty SIP
- rózne role
- proxy
- registrar
- redirect
- najbardziej elastyczny gt SIP application server
- programowalny kontener dla aplikacji SIP
- czesto udostepniajacy tez inne modele (web,
J2EE/JEE) - integracja róznych swiatów
- sa rózne 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 programiste
- Programowanie na wyzszym poziomie abstrakcji
- Zajmuje sie zlozonymi aspektami (transakcje,
security, ...) - Skalowalnosc, niezawodnosc, wysoka dostepnosc,
...
13Miejsce SIP Servlet
Dialog Management Layer
Transaction Layer
Stos SIP (niskopoziomowa sygnalizacja)
Message Parser (Coder/Decoder)
Transport Layer
TCP
UDP
TLS
14Miejsce SIP Servlet
- Obiekty
- Request
- Response
- Message
- ...
- Session API
- Timer API
- Deployment
- Listeners
SIP Servlet Container
Dialog Management Layer
Transaction Layer
Stos SIP
Message Parser (Coder/Decoder)
Transport Layer
TCP
UDP
TLS
15Servlet 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
16Demo Hello World SIP
17SIP Servlet API
- JSR-116
- 2003 r.
- wkrótce uaktualnienie JSR-289, m.in.
- uscislenia m.in. wspólpraca sesji HTTP i SIP
- kompozycja aplikacji
- adnotacje (podobnie jak w HTTP Servlet 2.5)
18Model obiektów SIP Servlet
19Klasa SIP Servlet
20Klasy SipServletRequest i SipServletResponse
21Klasa SipFactory
22Sesje (2 rodzaje)
23URI i adresy
24Proxy
25Timers
26Mapowanie (w sip.xml)
27Kompozycja aplikacji
SIP Servlet App. 1
SIP Servlet App. 2
SIP Servlet App. 3
SIPRequestObject
SIPRequestObject
SIPRequestObject
Servlet Container
28Przydatne narzedzia
- IDE
- SIP app server (z kontenerem SIP Servlet)
- BEA WebLogic SIP Server
- IBM WebSphere 6.x takza ma prosty kontener SIP
Servlet - Glassfish projekt SailFin wciaz w fazie
beta/alpha - ...
- Wireshark
- Telefony
- Softphone np. X-lite, SJ Phone, ...
- Hard np. Grandstream
- SIP client (np. Nokia E61i)
- SIPp przydatne do testowania, wysyla i
przetwarza komunikaty SIP - Opcje media servers, gateways, ...
29DemoAplikacja SIP
30DemoAplikacja konwergentnaClick-to-make-a-confe
rence
31Przydatne informacje
- SIP Servlet API
- http//jcp.org/en/jsr/detail?id116
- http//jcp.org/en/jsr/detail?id289
- http//dev2dev.bea.com/wlcp
- http//www.tech-invite.com
- http//imsinkubator.pl
32Podsumowanie
- Dlaczego taki temat ?
- Krótkie wprowadzenie do protokolu SIP
- Demo - Hello SIP Servlet World
- Krótkie wprowadzenie do SIP Servlet API
- Demo - Przykladowe aplikacje
- Przydatne narzedzia i informacje
33Dzieki ? !
- Waldek Kot
- (prv) waldemar_kot_at_gazeta.pl
- waldemar.kot_at_bea.com