Table of Contents
Foreword Gonzalo Camarillo xi
Foreword James Steadman xiii
Preface xv
Part I Introduction to SIP Servlet Technology 1
1 Introduction to SIP Servlets 3
1.1 Session Initiation Protocol 3
1.2 SIP Servlets and the SIP Servlet Vision 15
1.3 Java Enterprise Edition 17
1.3.1 Servlet Specification 17
1.3.2 Annotations 19
1.3.3 Enterprise JavaBeans (EJB) 19
References 21
2 The SIP Servlet Container 23
2.1 Container Responsibilities 23
2.1.1 Life-Cycle Management 23
2.1.2 Protocol Compliance 25
2.1.3 Mapping Requests to Servlets 25
2.1.4 Receiving SIP Requests 29
2.1.5 Receiving SIP Responses 32
2.1.6 Session Targeting 34
2.1.7 Session Utilities 40
2.1.8 SIP Factory 43
2.1.9 Timer Service 45
2.2 Container Convergence 47
2.2.1 HTTP Container Convergence 48
2.2.2 JEE Container Convergence 50
2.3 Security 51
References 56
3 The SIP Servlet Application 58
3.1 SIP Servlet Packaging 58
3.1.1 Deployment Descriptor 60
3.2 Application Roles 61
3.2.1 Proxy 61
3.2.2 User Agent Client 66
3.2.3 User Agent Server 69
3.2.4 Back-to-Back User Agent 71
3.3 Application Constructs 76
3.3.1 SIP Application Session 77
3.3.2 SIP Session 78
3.3.3 Application Data Storage 81
3.3.4 Session Lifetime and Invalidation 83
3.3.5 Annotations 88
References 91
4 Application Router 92
4.1 SIP Servlet 1.1 Composition Model 92
4.2 Application Router, Container, and Application Interaction 98
4.2.1 Subsequent Requests and Responses 107
References 109
5 Moving Forward 110
5.1 SIP Servlet Threading Model 110
5.2 Outstanding Issues 111
5.3 SIP Protocol Support 111
5.4 JSR 309 112
References 113
Part II Developer and DeploymentEnvironments 115
6 Relationship and Role Within IMS 117
References 122
7 SailFin 101 123
8 SailFin Understanding 141
8.1 History 142
8.2 Architecture 143
8.3 Logging 145
8.4 Network Configuration 147
8.5 SIP Container Architecture 151
8.6 Writing Your Own Interceptor Layer 158
8.6.1 Writing Custom Application Router 164
8.7 Cluster Deployment 169
8.7.1 Load Balancing and IP Sprayers 175
8.7.2 ENUM 180
References 182
9 SIP Servlet Client Programming 184
9.1 Writing HTTP Servlet-Based Client 186
9.2 Using Asynchronous HTTP 186
9.3 Using ICEfaces 196
9.4 REST and JAX-RS 202
9.4.1 Consuming a REST Service 213
9.5 Java Me Jsr 180 217
References 227
10 The SIP Servlet Application Programming Interface (API) 228
10.1 Container Utilities 229
10.1.1 SipFactory 229
10.1.2 AuthInfo 231
10.1.3 SipSessionsUtil 232
10.1.4 ConvergedHttpSession 234
10.1.5 SipServletListener 234
10.2 Application Constructs 235
10.2.1 SipApplicationSession 235
10.2.2 SipApplicationSessionActivationListener 239
10.2.3 SipApplicationSessionAttributeListener 240
10.2.4 SipApplicationSessionBindingListener 241
10.2.5 SipApplicationSessionListener 242
10.2.6 SipSession 243
10.2.7 SipSessionActivationListener 247
10.2.8 SipSessionAttributeListener 248
10.2.9 SipSessionBindingListener 249
10.2.10 SipSessionListener 250
10.3 SIP Message Routing 251
10.3.1 Proxy 251
10.3.2 ProxyBranch 255
10.3.3 B2BuaHelper 258
10.3.4 SipErrorListener 260
10.4 SIP Messaging Constructs 261
10.4.1 SipServletMessage 261
10.4.2 SipServletRequest 269
10.4.3 SipServletResponse 273
10.4.4 Address 276
10.4.5 Parametable 278
10.4.6 SipURI 279
10.4.7 TelURL 283
10.4.8 URI 284
10.5 Timer Service 285
10.5.1 TimerService 286
10.5.2 ServlvetTimer 287
10.5.3 TimerListener 288
References 289
About the Authors 291
Index 293