NIST implementation of the JAIN-SIP interfaces. JAIN-SIP (see www.javasoft.com JSR 32) is a low level JAVA standard protocol wrapper for the stack and message packages. It allows you to access the stack and messages in a standard fashion and delivers events to an application under certain conditions. Its intended use is to build portable User Agents, proxy servers and low level protocol test tools. It is constructed from underying NIST SIP objects by embedding these in wrapper objects. The JAIN implementation includes a transaction layer. You must choose a transaction model when configuring the stack. There are two possible transaction models:

applicationManaged Transactions: The stack tracks outstanding transactions and informs the application layer throught a transaction timeout notification for each outstanding transaction. That is the application gets a timeout notification on an exponentially decaying time tick for each transaction for which no final response has been received. For stateless behavior, you can configure the stack to not delvier timeout notifications and so the underlying transaction state becomes irrelevant. Specify this using: gov.nist.jainsip.stack.transactionModel=applicationManaged

stackManaged Transactions: The stack implements chapter 17 of the SIP Spec. The transaction state machine is fully managed by the stack. The JAIN transaction layer is a wrapper around the NIST-SIP transaction layer (contributed by Jeff Keyser). Applications receive a timeout when a transaction does not complete in the expected time. Specify this using: gov.nist.jainsip.stack.transactionModel=systemManaged

Stack configuration

 

JAIN does not define a standard way in which to configure the stack. The stack is configured via a property file. The property file itself is specified as a property and is supplied to the application using -Dgov.nist.jainsip.stack.configuration=configuration switch. The property configuration file contains several stack configuration parameters. These can be overridden by the properties that appear on the command line. Here are the properties that can be specified either as part of the command line using the -DpropertyName= switch or in the configuration file.

Here is an example properties file:
  gov.nist.jainsip.stack.stackName="My Stack"
  gov.nist.jainsip.stack.traceLevel=32
  gov.nist.jainsip.stack.stackHostName=nist.gov
  gov.nist.jainsip.stack.serverLog=myLogfile
  gov.nist.jainsip.stack.stackAddress=129.6.55.64
  gov.nist.jainsip.stack.enableUDP=5060
  gov.nist.jainsip.stack.enableTCP=5060
  gov.nist.jainsip.stack.defaultRoute=is2.antd.nist.gov:5060/UDP
  gov.nist.jainsip.stack.accessLogViaRMI=true
  gov.nist.jainsip.stack.transactionModel=systemManaged