The sip-app element is the root of the deployment descriptor for a SIP servlet application. Note that the sub-elements of this element can be in the arbitrary order. Because of that, the multiplicity of the elements of distributable, session-config, proxy-config, and login-config was changed from "?" to "*" in this schema. However, the deployment descriptor instance file must not contain multiple elements of distributable, session-config, proxy-config, and login-config. The application name specifies the unique name of the application within the container. The names of Sip Servlet applications must be unique within a container instance or across clustered containers under common administrative control for application selection to function properly. It is recommended that application developers follow the Java class naming convention when naming applications, e.g. "org.sipservlet.app.voiceMail", to avoid naming conflicts with other developers. The main servlet name element contains the canonical name of the main servlet. Only one servlet is designated as main within the servlet application. The name is the name of one of the servlets declared in the servlet-name element. If servlet-mapping mechanism is not used and there is only one servlet in the application, then this declaration is optional wherein the lone servlet becomes the main servlet. The servlet-mapping element defines a mapping between a servlet and a pattern The different types of conditions supported. A pattern is a condition: a predicate over the set of SIP requests. An "and" condition is true if and only if all its constituent conditions are true. An "or" condition is true if at least one of its constituent conditions is true. Negates the value of the contained condition. True if the value of the variable equals the specified literal value. True if the value of the variable contains the specified literal value. True if the specified variable exists. Specifies a variable. Example: request.uri.user Specifies a literal string value that is used to specify rules. The proxy-config element configures proxy-related parameters. The security-constraint element is used to associate security constraints with one or more servlet resource collections The resource-collection element is used to identify a subset of the resources and SIP methods on those resources within a servlet application to which a security constraint applies. If no SIP methods are specified, then the security constraint applies to all SIP methods. The presence of the proxy-authentication element indicates to the container that it must challenge the user agent with a 407 (Proxy Authentication Required) response status code when authenticating an incoming request. If not present a 401 (Unauthorized) status code is used. The login-configType is used to configure the authentication method that should be used, the realm name that should be used for this application and the identity assertion scheme to be used. Used in: sip-app The realm name element specifies the realm name to use for authentication. The identity-assertionType is used to configure the identity-assertion scheme that should be used and whether the scheme is required or supported. Used in: login-config The identity-assertion-schemeType is used to specify the scheme to be used for identity assertion. Legal values include Identity and P-Asserted-Identity. Used in: identity-assertionType The identity-assertion-supportType element is used to specify if the identity assertion scheme is REQUIRED or SUPPORTED by the application. The default value of this element is SUPPORTED. Used in: identity-assertionType This type contains the recognized versions of sip application supported. It is used to designate the version of the sip application.