Using the Converged Application Example

SIP Protocol Programming 3-1 3 SIP Protocol Programming This chapter describes programming SIP applications and contains the following sections: ■ Section 3.1, Using Compact and Long Header Formats for SIP Messages ■ Section 3.2, Using Content Indirection in SIP Servlets ■ Section 3.3, Generating SNMP Traps from Application Code

3.1 Using Compact and Long Header Formats for SIP Messages

This section describes how to use the WebLogic Server SipServletMessage interface and configuration parameters to control SIP message header formats.

3.1.1 Overview of Header Format APIs and Configuration

Applications that operate on wireless networks may want to limit the size of SIP headers to reduce the size of messages and conserve bandwidth. JSR 289 provides the SipServletMessage.setHeaderForm method, which enables application developers to set a long or compact format for the value of a given header. One feature of the SipServletMessage API provided in JSR 289 is the ability to set long or compact header formats for the entire SIP message using the setHeaderForm method. In addition to SipServletMessage, WebLogic Server provides a container-wide configuration parameter that can control SIP header formats for all system-generated headers. This system-wide parameter can be used along with SipServletMessage.setHeaderForm and SipServletMessage.setHeader to further customize header formats.

3.1.2 Summary of Compact Headers

Table 3–1 defines the compact header abbreviations described in the SIP specification http:www.ietf.orgrfcrfc3261.txt . Specifications that introduce additional headers may also include compact header abbreviations. Table 3–1 Compact Header Abbreviations Header Name Long Format Compact Format Call-ID i Contact m Content-Encoding e 3-2 Oracle WebLogic Server SIP Container Developers Guide

3.1.3 Assigning Header Formats with WlssSipServletMessage

A pair of gettersetter methods, setHeaderForm and getHeaderForm, are used to assign or retrieve the header formats used in the message. These methods assign or return a HeaderForm object, which is a simple Enumeration that describes the header format: ■ COMPACT—Forces all headers in the message to use compact format. This behavior is similar to the container-wide configuration value of force compact, as described in use-compact-form in the Configuration Reference Manual. ■ LONG—Forces all headers in the message to use long format. This behavior is similar to the container-wide configuration value of force long, as described in use-compact-form in the Configuration Reference Manual. ■ DEFAULT—Defers the header format to the container-wide configuration value set in use-compact-form. SipServletResponse.setHeaderForm can be used in combination with SipServletMessage.setHeader and the container-level configuration parameter, use-compact-form.

3.1.4 Summary of API and Configuration Behavior

Header formats can be specified at the header, message, and SIP Servlet container levels. Table 3–1 shows the header format that results when adding a new header with SipServletMessage.setHeader, given different container configurations and message-level settings with SipServletMessage.setHeaderForm. Content-Length l Content-Type c From f Subject s Supported k To t Via v Table 3–2 API Behavior when Adding Headers SIP Servlet Container Header Configuration use-compact-fo rm Setting .SIPServletMessage setHeaderForm Setting SipServletMessage. setHeader Value Resulting Header COMPACT DEFAULT Content-Type Content-Type COMPACT DEFAULT c c COMPACT COMPACT Content-Type c COMPACT COMPACT c c COMPACT LONG Content-Type Content-Type COMPACT LONG c Content-Type Table 3–1 Cont. Compact Header Abbreviations Header Name Long Format Compact Format SIP Protocol Programming 3-3 Table 3–1 shows the system header format that results when setting the header format with WlssSipServletResponse.setUseHeaderForm given different container configuration values. LONG DEFAULT Content-Type Content-Type LONG DEFAULT c c LONG COMPACT Content-Type c LONG COMPACT c c LONG LONG Content-Type Content-Type LONG LONG c Content-Type FORCE_COMPACT DEFAULT Content-Type c FORCE_COMPACT DEFAULT c c FORCE_COMPACT COMPACT Content-Type c FORCE_COMPACT COMPACT c c FORCE_COMPACT LONG Content-Type Content-Type FORCE_COMPACT LONG c Content-Type FORCE_LONG DEFAULT Content-Type Content-Type FORCE_LONG DEFAULT c Content-Type FORCE_LONG COMPACT Content-Type c FORCE_LONG COMPACT c c FORCE_LONG LONG Content-Type Content-Type FORCE_LONG LONG c Content-Type Table 3–3 API Behavior for System Headers SIP Servlet Container Header Configuration use-compact-form Setting SipServletMessage. setHeaderForm Setting Resulting Contact Header COMPACT DEFAULT m COMPACT COMPACT m COMPACT LONG Contact LONG DEFAULT Contact LONG COMPACT m LONG LONG Contact FORCE_COMPACT DEFAULT m FORCE_COMPACT COMPACT m FORCE_COMPACT LONG Contact FORCE_LONG DEFAULT Contact FORCE_LONG COMPACT m FORCE_LONG LONG Contact Table 3–2 Cont. API Behavior when Adding Headers