• No replies
23 Posts

Pinned topic Feature Focus Week: SIP Servlet Specification, version 1.1 (JSR 289)

‏2010-09-27T19:08:11Z |
JSR 289 is the latest SIP servlet specification. The new 1.1 version of the SIP servlet spec was delivered initially in the Communications Enabled Applications Feature Pack for WebSpere 7.x. That work has now rolled into the WebSphere v8 Beta. The new SIP servlet specification is a significant upgrade from the 1.0 version of the specification defined in JSR 116.

For those unfamiliar with SIP, the acronym stands for Session Initiation Protocol. This protocol is used to negotiate peer-to-peer media sessions between two users or services. Is was developed in the IETF under RFC 3261 (originally RFC 2543). SIP is being used today for many different types of applications including Voip applications, Presence/Awareness, Call Center applications, Teleconferencing applications, IPTV and much more.

Some of the major enhancements delivered with JSR 289 include:

Application Router Support<hr />
Application Routers handle routing of SIP requests between applications running on a WebSphere application server or within a cluster allowing the applications to remain independent of one another. An Application Router has complete control over routing between multiple deployed applications. There are two different types of application routers:
- A Default Application Router (DAR) which shipped with WebSphere (configuration follows JSR 289 spec)
- A Custom Application Router (CAR) which is defined and deployed by the application developer.

Annotation Support
<hr />
JSR 289 defines a set of annotations that allow for the creation of a new SIP application without the need for defining configuration details about the application in a sip.xml deployment descriptor file. Some of the main supported annotations include: @SipApplication, @SipServlet and @SipListener.

Standards Based Converged Application Support
<hr />
Although support for converged applications was originally delivered in WebSphere 6.1, proprietary APIs were required to track down SIP Application Sessions and SIP Sessions from an HTTP session because JSR 116 did not provide the APIs needed to deliver this functionality. JSR 289 corrected this shortcoming by including the interfaces needed to do this in a standards compliant manner.

Multihome Support
<hr />
Multihome support provides a way for a SIP application to control which interface an outbound request is sent on when multiple interfaces are defined at a cluster's corresponding SIP proxy servers. This allows for deployments where a cluster of WebSphere SIP application servers can straddle both a company's private intranet and the public internet. Note that Multihome is only supported in cluster deployments through the SIP proxy configuration. It is not supported in a stand alone SIP application server.

B2BUA Helper Support
<hr />
The B2BUA Helper delivered with JSR 289 contains all the useful methods for a B2BUA operation. It is intended to make it easier for application developers to manage both call legs that make up a B2BUA call flow.

Session Key Based Targeting Support
<hr />
This new feature is intend as a replacement to the encoded URI utility supported in JSR 116. In fact, URI encoding is deprecated in JSR 289 because of limitations imposed on the feature by the new Application Routing facilities. In its place is Session Key Based Targeting which provides a mechanism SIP applications can use to route initial SIP requests, that would normally result in a new SIP Application Session, to a previously existing SIP Application Session instance.

Asynchronous Invocation API
<hr />
In addition to the new features defined by the JSR 289 specification, a new set of APIs was also delivered with the new SIP servlet container called the Asynchronous Invocation API. This set of APIs provides a way for non-SIP threads running anywhere in a cluster to locate a specific SIP Application Session and perform a work task in the context of that SIP App Session without blocking the calling thread.

Brian L. Pulito
CEA FeP Release Architect
Updated on 2010-09-27T23:21:45Z at 2010-09-27T23:21:45Z by bpulito