This document specifies the JSIP API Specification v1.2.

Objective

The objective of this specification is to develop a standard interface to the  Session Initiation Protocol (SIP) that can be used independently or by higher level programming entities and environments. This specification was designed to provide a developer with a standardized interface for SIP services which are functionally compatible with the RFC3261 specification. This specification is a general purpose transaction based Java interface to the SIP protocol. It is rich both semantically and in definition to the SIP protocol.

Design approach

JSIP supports RFC 3261 functionality and the following SIP extensions; the INFO method (RFC 2976), Reliability of provisional responses (RFC 3262), Event Notification Framework (RFC 3265), the UPDATE method (RFC 3311), the Reason Header (RFC 3326), the Message method (RFC 3428) defined for instant messaging and the REFER method (RFC 3515), Distributing Authoritative Name Servers via Shared Unicast Addresses (RFC 3581).

JSIP standardizes the interface to the generic transactional model defined by the SIP protocol, providing access to dialog functionality from the transaction interface. The architecture is developed for the J2SE environment therefore is event based utilizing the Listener/Provider event model. The specification is asynchronous in nature using transactional identifiers to correlate messages. It defines various factory classes for creating Request and Response messages and SIP headers.  JSIP defines an interface for each Header supported, which can be added to Request or Response messages respectively. These messages are passed to the SipProvider with a transaction to be sent onto the network, while the SipListener listens for incoming Events that encapsulate messages that may be responses to initiated dialogs or new incoming dialogs.

JSIP is extensible by design. It defines a generic extension header interface that can be used by applications that utilize headers that are not supported directly by JSIP. The design also defines a mechanism to support future dialog creation methods in a JSIP environment via the use of Java Properties. JSIP can be managed statically with regards to IP addresses and router function, and dynamically specific to ports and transports. 

JSIP applications may be stateless, dialog stateful or transaction stateful components such as stateful proxy servers ( without being dialog stateful ). The default handling of message retransmissions in JSIP is dependent on the application. All retransmissions are handled by the stack for user agents (ie. dialog stateful applications).

The updates incorporated in JSIP v1.2 can be found in the Change-Log.

Specification Leads

Phelim O'Doherty, BEA Systems Inc.
Mudumbai Ranganathan, National Institute of Standards and Technology (NIST), Advanced Networking Technologies Division.

The specification leads would like to acknowledge effort and contributions to the JSIP specification from 8x8, dynamicsoft, HP, IBM, Nortel Networks, Open Cloud, Radvision, Siemens AG, Sun Microsystems.

Version 1.2 benifitted greatly by input from the following individuals: Jeroen van Bemmel (Lucent) and Sarit Galanos (Radvision). The specification leads gratefully acknowledge their contributions and those of the user community in ironing out the fine details. Jeroen van Bemmel identified and fixed several bugs in the RI and helped implement some TCK tests.

Special thanks is given to the development team at the NIST. This specification owes a lot to their commitment in developing the Reference Implementation and Technology Compatibility Kit (TCK). Emil Ivov from Louis Pasteur University, France helped develop the Technology Compatibility Kit for version 1.1 of this specification which was evolved into the TCK for V 1.2.

The specification leads would like to thank the Advanced Networking Technologies Division (NIST) for their support in placing the Reference Implementation in the public domain and making accessible in source code for the people, thus encouraging adoption and evolution of this standard.