sipservlet-spec
  1. sipservlet-spec
  2. SIPSERVLET_SPEC-4

Clarify specific API in distributed environment

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: 2.0-pr
    • Labels:
      None

      Description

      It would be useful to mandate certain behavior if an implementation chooses to support clustering. For example,
      SipSessionsUtil.getApplicationSessionById() should work across the cluster. Key based session targeting should work across the cluster. In case of
      migration or failover of session from one container to another, how the attributes are restored should be standardized.

        Activity

        Hide
        keith-lewis added a comment -

        We agree that it should be mandatory for key based session targeting to work across the cluster.

        We should however allow for topologies where the SAS is located on particular nodes in the cluster.

        It would be good to have the following methods of the SAS always available.

        • encodeURI
        • encodeURL
        • getApplicationName

        The first 2 methods only need access to the SASid.
        The app name can be retrieved by the SipSessionUtil object.

        To achieve this we could require that even when the full object is not available the container should supply a "skeleton" object which implements these methods.
        All other methods could return a IllegalStateException.

        To allow the developer to know whther it has the "real" object we can provide a new method on the SAS called isLocalSession() (or isAvailableLocally?)

        SipSessionsUtil.getApplicationSessionById() should never return null - it either returns the skeleton object or a real one.

        Show
        keith-lewis added a comment - We agree that it should be mandatory for key based session targeting to work across the cluster. We should however allow for topologies where the SAS is located on particular nodes in the cluster. It would be good to have the following methods of the SAS always available. encodeURI encodeURL getApplicationName The first 2 methods only need access to the SASid. The app name can be retrieved by the SipSessionUtil object. To achieve this we could require that even when the full object is not available the container should supply a "skeleton" object which implements these methods. All other methods could return a IllegalStateException. To allow the developer to know whther it has the "real" object we can provide a new method on the SAS called isLocalSession() (or isAvailableLocally?) SipSessionsUtil.getApplicationSessionById() should never return null - it either returns the skeleton object or a real one.
        Hide
        binod added a comment -

        We had a discussion on this in the EG meeting.

        In general, it is hard to get consensus on issues related to distributed environment. This is partly due to
        the fact that the distributed environment is not well defined in generally in java space and sip servlets
        in particular because of its asynchronous nature.

        The conclusion was containers should have more flexibility in their topologies and implementation choices and is
        best left for them to innovate.

        Show
        binod added a comment - We had a discussion on this in the EG meeting. In general, it is hard to get consensus on issues related to distributed environment. This is partly due to the fact that the distributed environment is not well defined in generally in java space and sip servlets in particular because of its asynchronous nature. The conclusion was containers should have more flexibility in their topologies and implementation choices and is best left for them to innovate.

          People

          • Assignee:
            binod
            Reporter:
            echeung
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: