Interface WlssSipApplicationSession

All Superinterfaces:
javax.servlet.sip.AttributeStore, javax.servlet.sip.SipApplicationSession

public interface WlssSipApplicationSession extends javax.servlet.sip.SipApplicationSession
This interface is an extension of the standard SipApplicationSession interface.
Author:
Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
See Also:
  • Nested Class Summary

    Nested Classes

    Nested classes/interfaces inherited from interface javax.servlet.sip.SipApplicationSession

    javax.servlet.sip.SipApplicationSession.Protocol
  • Method Summary

    Modifier and Type
    Method
    Description
    This methods executes WlssTask in a transactional manner.
    void
    This method allows an application to access a SipApplicationSession in an asynchronous manner.
    byte
    The site identifier.
    <T> T
    getSession(String id, Class<T> sessionType)
    Returns a protocol session object with the specified id and specified type belonging to this application session, or null if not found.
    <T> T
    getSession(String id, String protocol)
    Returns the protocol session object with the specified id associated with the specified protocol belonging to this application session, or null if not found.
    <T> Set<T>
    getSessions(Class<T> sessionType)
    Returns an immutable Set of all valid "protocol" session objects associated with the specified type associated with this application session.
    void
    This method can be used to override the default call-state persistence characteristics.

    Methods inherited from interface javax.servlet.sip.AttributeStore

    clearAttributes, getAttribute, getAttributeNameSet, removeAttribute, setAttribute

    Methods inherited from interface javax.servlet.sip.SipApplicationSession

    addIndexKey, encodeURI, encodeURL, getApplicationName, getAttributeNames, getCreationTime, getExpirationTime, getId, getIndexKeys, getInvalidateWhenReady, getLastAccessedTime, getSession, getSessions, getSessions, getSessionSet, getSessionSet, getSipSession, getTaskFuture, getTaskFutures, getTimer, getTimers, invalidate, isReadyToInvalidate, isValid, removeIndexKey, setExpires, setInvalidateWhenReady
  • Method Details

    • doAction

      Object doAction(WlssAction action) throws Exception
      This methods executes WlssTask in a transactional manner. During the execution of this method, no other thread or engine will be allowed access to the call-state pertaining to the SipApplicationSession. It has been introduced to provide a mechanism to control concurrency across the entire engine cluster while the application is interacting with the SipApplicationSession. This method is intended to be used by non-SIP scoped servlets (e.g. HTTP servlets in converged applications). When this API is used by the applications, the container guarentees that the business logic contained within the WlssAction will be executed with a lock on the SipApplicationSession instance. If used within the SIP scope (in call) and the Call-ID matches, this method will be a no-op, since the container already guarentees concurrency control during the execution of the service method for SIP servlets. If the SipApplicationSession belongs to a different call-state, than the current SIP request, then container will acquire a lock.

      Example usage:


      
         SipApplicationSession appSession = ...;
         WlssSipApplicationSession wlssAppSession = (WlssSipApplicationSession) appSession;
      
         wlssAppSession.doAction(new WlssAction() {
             public Object run() throws Exception {
      
               // add your business logic here
               appSession.setAttribute("counter", latestCounterValue);
               sipSession.setAttribute("currentState", latestAppState);
      
               // The container will make sure that the run method will be invoked
               // the with appSession locked
      
               return null;
             }
           });
       

      Parameters:
      action - WlssAction which is passed by the application
      Returns:
      Returns the result of the WlssTask's run method (may be null)
      Throws:
      Exception - - propagates the Exception thrown by the run method
    • doAsynchronousAction

      void doAsynchronousAction(WlssAsynchronousAction asyncWork)
      This method allows an application to access a SipApplicationSession in an asynchronous manner. This method is useful for accessing the SipApplicationSession from Web or EJB modules in a converged application. When this API is used by the above modules, the container guarantees that the business logic contained within the SipApplicationSessionAsynchronousWork will be executed in a thread-safe manner.

      Example Usage:

       

      SipApplicationSession appSession = ...; appSession.doAsynchronousAction(new WlssAsynchronousAction() { void run(SipApplicationSession appSession) { // add your business logic here int counter = appSession.getAttribute("counter"); ++ counter; appSession.setAttribute("counter", counter); } });

      Parameters:
      asyncWork - the work to be done on this SipApplicationSession. The run method of this object contains the work (business logic) to be performed.
      See Also:
    • setPersist

      void setPersist(WlssSipApplicationSession.PersistenceType type, boolean value)

      This method can be used to override the default call-state persistence characteristics.

      Parameters:
      type - DATABASE denotes that the state should be saved to database to save RAM space. GEO_REDUNDANCY indicates that the state should be propagated to the remote site.
      value - whether or not to enable the action.
    • getGeoSiteId

      byte getGeoSiteId()
      The site identifier.
      Returns:
      the site identifier for this session
    • getSession

      <T> T getSession(String id, Class<T> sessionType)
      Returns a protocol session object with the specified id and specified type belonging to this application session, or null if not found.

      If javax.servlet.sip.SipSession is specified the result will be an valid SipSession object with the specified id belonging to this application session. For javax.servlet.http.HttpSession the result will be a valid javax.servlet.http.HttpSession with the specified id belonging to this application session.

      Parameters:
      id - the session id
      sessionType - Type of the protocol session.
      Returns:
      the corresponding protocol session object or null if none is found.
      Throws:
      NullPointerException - on null id or sessionType
      IllegalStateException - if this application session is not valid
      Since:
      2.0
      See Also:
      • javax.servlet.sip.spi.ProtocolSessionAdapter#getSessionType()
    • getSessions

      <T> Set<T> getSessions(Class<T> sessionType)
      Returns an immutable Set of all valid "protocol" session objects associated with the specified type associated with this application session. If the specified type is not found, an empty Set is returned.

      If javax.servlet.sip.SipSession is specified the result will be a Set of valid SipSession objects belonging to this application session. For javax.servlet.http.HttpSession the result will be a Set of valid javax.servlet.http.HttpSession objects.

      Parameters:
      sessionType - Type of the protocol session.
      Returns:
      Set of all valid protocol sessions of the specified protocol
      Throws:
      IllegalStateException - if this application session is not valid
      NullPointerException - if the sessionType is null
      IllegalArgumentException - if the sessionType is not understood by container.
      Since:
      2.0
      See Also:
      • javax.servlet.sip.spi.ProtocolSessionAdapter#getSessionType()
    • getSession

      <T> T getSession(String id, String protocol)
      Returns the protocol session object with the specified id associated with the specified protocol belonging to this application session, or null if not found.

      If "SIP" is specified the result will be a valid SipSession object with the specified id belonging to this application session. For "HTTP" the result will be a valid javax.servlet.http.HttpSession with the specified id belonging to this application session. For "DIAMETER" the result will be a valid com.bea.wcp.diameter.session with the specified id belonging to this application session.

      Parameters:
      id - the session id
      protocol - an string identifying the protocol
      Returns:
      the corresponding protocol session object or null if none is found.
      Throws:
      NullPointerException - on null id or protocol
      IllegalStateException - if this application session is not valid
      Since:
      2.0
      See Also:
      • SipServletContext#register(String protocol)