![]() ![]() ![]() ![]() ![]() ![]() ![]() |
The following sections describe the Service invocation method of the SIP Servlet API (JSR 116):
The SIP Servlet API provides a model for application composition and interaction Service Interaction which is analogous with a simplistic implementation of the Service Capability Interaction Manager (SCIM) alluded to by the 3GPP. Handling of all incoming requests is governed by the WebLogic SIP Server SIP Servlet Container in accordance with the SIP Servlet API specification.
The WebLogic SIP Server SIP Servlet Container filters received Initial SIP requests and applies a set of defined rules (Servlet Mapping Rules) to determine which SIP Servlets within the deployed applications shall be invoked to service that particular request. This order is always sequential and is defined in a configuration file built up through successive deployments of SIP applications.
Within the deployment descriptor for each SIP Application that is deployed, a sequence of conditions, called Servlet Mapping Rules, is defined. These rules determine which Servlets will handle any initial request. As the request object is “routed” between Servlets, the path from Servlet to Servlet is recorded in a fashion equivalent to the “record-route” and “via” headers in SIP requests. This route is stored as part of the SIP application session and is appended to subsequent requests within the same dialogue in either “forward” or “reverse” order depending on the orientation of the “From” and “To” tags for the request. This internal “route” is stripped from the request object before a SIP request leaves WebLogic SIP Server and is not visible to external SIP servers. It is again added whenever a new request within an existing dialog is received.
The SIP Servlets (SIP/HTTP application) that are invoked in this manner are unaware that any other SIP/HTTP application exists. This is one of the fundamental characteristics of the SIP Servlet programming model. Making maximal use of this model requires that the Servlet container be treated by the developer as if it is a logical sub-network, with the container effectively acting as an intermediary proxy. In many ways, the SIP Servlet Container may be compared with the Serving CSCF function in an IMS architecture.
Servlet mapping rules are defined by the service developer and are detailed in the Deployment Descriptor for the application. The deployment descriptor is a document that is contained within the SAR archive file that is deployed on WebLogic SIP Server. There may be more than one Servlet mapping rule defined within the Deployment Descriptor for the application (SIP/HTTP application). In this case, these rules must be applied in the order in which they are defined in the Deployment Descriptor.
The following figure provides an example of a simple Servlet mapping rule found in a typical Deployment Descriptor.
Note: | Servlet mapping rules are entirely concerned with the content of the SIP message being processed. It is not possible to use information regarding the actual IP address and port number on which the request was received as service trigger points unless this information matches the request URI of the Sip message. |
The Servlet mapping rule shown in Listing A-1 illustrates the following Boolean expression:
(Method=”INVITE” OR Method = “MESSAGE” OR Method=”SUBSCRIBE”) AND
(Method=”INVITE” OR Method = “MESSAGE” OR (NOT Header = “from” Match = “Bob”))
Note: | This is the same logical condition used in the Initial filter Criteria example provided in 3GPP TS 29.228 Annex C expressed as a Servlet Mapping Rule. |
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<pattern>
<and>
<or>
<equal>
<var>request.method</var>
<value>INVITE</value>
</equal>
<equal>
<var>request.method</var>
<value>MESSAGE</value>
</equal>
<equal>
<var>request.method</var>
<value>SUBSCRIBE</value>
</equal>
</or>
<or>
<equal>
<var>request.method</var>
<value>INVITE</value>
</equal>
<equal>
<var>request.method</var>
<value>MESSAGE</value>
</equal>
<not>
<equal>
<var>request.from.display-name</var>
<value>Bob</value>
</equal>
</not>
</or>
</and>
</pattern>
</servlet-mapping>
Service Point Triggers are the attributes of a SIP request that may be evaluated by Servlet Mapping Rules. See Section 11.1: Triggering Rules in the JSR 116 specification for more information.
The Request Object is a Java representation of a SIP request.
The equal and contains operators optionally ignores character case when making comparisons. The default is case sensitive matching.
![]() ![]() ![]() |