Cipango goals
Design goals of Cipango are the following:
...
The chain of handlers contains all stateful handlers needed to provide SIP Servlets support. It starts from the SipContextHandlerCollection in charge of application selection and includes CallSessionHandler, TransactionHandler and SessionHandler responsible respectively for concurrency control, transactional state processing and SIP session management.
Message processing
...
Threading Model
JSR 289 does not specify a threading model for SIP Servlets Application Servers. Cipango uses a simple and flexible model based on SipApplicationSession
. This means that only one thread can execute an activity (servlet doRequest
or doResponse
handler, servlet timer ...) related to a given SipApplicationSession
at the same time.
This allows in particular to have a consistent model in proxy or b2b (back-to-back) applications. Indeed, in proxy mode upstream and downstreams legs belong to the same SipSession whereas in b2b mode, each leg belongs to a different SipSession
. If these SipSession
are created within the same SipApplicationSession
, the behaviour is similar in both modes, i.e. all received message are processed in the following order:
a sequential way at the servlet level. If you would like to handle incoming messages from different SIP calls concurrently in b2b mode, you only have to use a different SipApplicationSession
for each SipSession
.