1 Introduction

The SIP Servlet API defined by JSR 289 provides a standard programming model for SIP applications [1]. Building on the Generic Servlet framework, this API provides a familiar approach for Java developers coming from the world of HTTP servlets. Application logic is controlled by overriding methods like doInvite and doSuccessResponse.

Telecommunications services in general lend themselves to specification by finite state machines (FSM). By providing an adaptation layer between the SIP Servlet API and the ECharts state-machine programming language, we can bring to bear the expressive power of ECharts to servlet containers that are compliant with the SIP Servlet API. ECharts features such as machine parameterization and well-defined transition priorities then make re-use of FSM logic modules easy and attractive [2].

Such an adaptation layer is described here. A programmer need not know the details of the JSR 289 standard to use ECharts for SIP Servlets, though none of the features of the API are hidden from programmers who wish to use them. In this adaptation, a complete SIP application can be built by specifying one or more ECharts Machines that describe the desired logic. The ECharts code is translated into Java and compiled and deployed as a native Java SIP Servlet application. This document describes the programming model and the process of building such an application, as well as additional capabilities for application composition and automatic termination handling.

For the remainder of the document, familiarity with ECharts and the SIP Servlet programming model is assumed.