DeltaSession (Tomcat API Documentation)
Keywords: org.apache.catalina.ha.session.DeltaSession class

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.catalina.ha.session
Class DeltaSession

    java.lang.Object
      org.apache.catalina.session.StandardSession
          org.apache.catalina.ha.session.DeltaSession

All Implemented Interfaces:
  java.io.Externalizable, java.io.Serializable, javax.servlet.http.HttpSession, ClusterSession, Session, ReplicatedMapEntry

    public class DeltaSession

extends StandardSession
implements java.io.Externalizable, ClusterSession, ReplicatedMapEntry

Similar to the StandardSession except that this session will keep track of deltas during a request.

Version:
  $Revision: 656714 $ $Date: 2008-05-15 17:56:55 +0200 (Thu, 15 May 2008) $
Author:
  Filip Hanik
See Also:
  Serialized Form

Field Summary
`protected java.util.concurrent.locks.Lock` | `diffLock`
`static Log` | `log`
`protected static StringManager` | `sm` The string manager for this package.

Fields inherited from class org.apache.catalina.session.StandardSession
`accessCount, ACTIVITY_CHECK, attributes, authType, containerEventMethod, containerEventTypes, creationTime, EMPTY_ARRAY, excludedAttributes, expiring, facade, id, info, isNew, isValid, lastAccessedTime, listeners, manager, maxInactiveInterval, NOT_SERIALIZED, notes, principal, sessionContext, support, thisAccessedTime`

Fields inherited from interface org.apache.catalina.Session
`SESSION_ACTIVATED_EVENT, SESSION_CREATED_EVENT, SESSION_DESTROYED_EVENT, SESSION_PASSIVATED_EVENT`

Constructor Summary
`DeltaSession()` Construct a new Session associated with the specified Manager.
`DeltaSession(Manager manager)`

Method Summary
`void` | `applyDiff(byte[] diff, int offset, int length)` Applies a diff to an existing object.
`void` | `expire(boolean notify)` Perform the internal processing required to invalidate this session, without triggering an exception if the session has already expired.
`void` | `expire(boolean notify, boolean notifyCluster)`
`protected java.lang.Object` | `getAttributeInternal(java.lang.String name)` Return the value of an attribute without a check for validity.
`java.lang.ClassLoader[]` | `getClassLoaders()`
`DeltaRequest` | `getDeltaRequest()`
`byte[]` | `getDiff()` Returns a diff and sets the dirty map to false
`long` | `getLastAccessedTimeInternal()` Return the last client access time without invalidation check
`protected long` | `getLastTimeReplicated()`
`long` | `getVersion()` For accuracy checking, a serialized attribute can contain a version number This number increases as modifications are made to the data.
`boolean` | `isDiffable()` If this returns true, the map will extract the diff using getDiff() Otherwise it will serialize the entire object.
`boolean` | `isDirty()` Has the object changed since last replication and is not in a locked state
`boolean` | `isPrimarySession()` returns true if this session is the primary session, if that is the case, the manager can expire it upon timeout.
`boolean` | `isValid()` Return the `isValid` flag for this session.
`void` | `lock()` Lock during serialization
`void` | `readExternal(java.io.ObjectInput in)`
`protected void` | `readObject(java.io.ObjectInputStream stream)` Read a serialized version of this session object from the specified object input stream.
`void` | `readObjectData(java.io.ObjectInput stream)`
`void` | `readObjectData(java.io.ObjectInputStream stream)` Read a serialized version of the contents of this session object from the specified object input stream, without requiring that the StandardSession itself have been serialized.
`void` | `recycle()` Release all object references, and initialize instance variables, in preparation for reuse of this object.
`void` | `removeAttribute(java.lang.String name, boolean notify)` Remove the object bound with the specified name from this session.
`void` | `removeAttribute(java.lang.String name, boolean notify, boolean addDeltaRequest)`
`protected void` | `removeAttributeInternal(java.lang.String name, boolean notify, boolean addDeltaRequest)`
`void` | `resetDeltaRequest()`
`void` | `resetDiff()` Resets the current diff state and resets the dirty flag
`protected void` | `setAccessCount(int count)`
`void` | `setAttribute(java.lang.String name, java.lang.Object value)` Bind an object to this session, using the specified name.
`void` | `setAttribute(java.lang.String name, java.lang.Object value, boolean notify, boolean addDeltaRequest)`
`void` | `setId(java.lang.String id)` Set the session identifier for this session.
`void` | `setIdInternal(java.lang.String id)` Set the session identifier for this session without notify listeners.
`protected void` | `setLastTimeReplicated(long lastTimeReplicated)`
`void` | `setMaxInactiveInterval(int interval)` Set the maximum time interval, in seconds, between client requests before the servlet container will invalidate the session.
`void` | `setMaxInactiveInterval(int interval, boolean addDeltaRequest)`
`void` | `setNew(boolean isNew)` Set the `isNew` flag for this session.
`void` | `setNew(boolean isNew, boolean addDeltaRequest)`
`void` | `setOwner(java.lang.Object owner)` This method is called after the object has been created on a remote map.
`void` | `setPrimarySession(boolean primarySession)` Sets whether this is the primary session or not.
`void` | `setPrincipal(java.security.Principal principal)` Set the authenticated Principal that is associated with this Session.
`void` | `setPrincipal(java.security.Principal principal, boolean addDeltaRequest)`
`void` | `setVersion(long version)` Forces a certain version to a replicated map entry
`java.lang.String` | `toString()` Return a string representation of this object.
`void` | `unlock()` Unlock after serialization
`void` | `writeExternal(java.io.ObjectOutput out)`
`protected void` | `writeObject(java.io.ObjectOutputStream stream)` Write a serialized version of this session object to the specified object output stream.
`void` | `writeObjectData(java.io.ObjectOutput stream)`
`void` | `writeObjectData(java.io.ObjectOutputStream stream)` Write a serialized version of the contents of this session object to the specified object output stream, without requiring that the StandardSession itself have been serialized.

Methods inherited from class org.apache.catalina.session.StandardSession
`access, activate, addSessionListener, endAccess, exclude, expire, fireContainerEvent, fireSessionEvent, getAttribute, getAttributeNames, getAuthType, getCreationTime, getId, getIdInternal, getInfo, getLastAccessedTime, getManager, getMaxInactiveInterval, getNote, getNoteNames, getPrincipal, getServletContext, getSession, getSessionContext, getValue, getValueNames, invalidate, isNew, isValidInternal, keys, passivate, putValue, removeAttribute, removeAttributeInternal, removeNote, removeSessionListener, removeValue, setAttribute, setAuthType, setCreationTime, setManager, setNote, setValid, tellNew`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.apache.catalina.Session
`access, addSessionListener, endAccess, expire, getAuthType, getCreationTime, getId, getIdInternal, getInfo, getLastAccessedTime, getManager, getMaxInactiveInterval, getNote, getNoteNames, getPrincipal, getSession, removeNote, removeSessionListener, setAuthType, setCreationTime, setManager, setNote, setValid`

Methods inherited from interface javax.servlet.http.HttpSession
`getAttribute, getAttributeNames, getCreationTime, getId, getLastAccessedTime, getMaxInactiveInterval, getServletContext, getSessionContext, getValue, getValueNames, invalidate, isNew, putValue, removeAttribute, removeValue`

Field Detail

### log

    public static Log log

### sm

    protected static StringManager sm

  The string manager for this package.

### diffLock

    protected java.util.concurrent.locks.Lock diffLock

Constructor Detail

### DeltaSession

    public DeltaSession()

  Construct a new Session associated with the specified Manager.

  Parameters:
    `manager` - The manager with which this Session is associated

### DeltaSession

    public DeltaSession(Manager manager)

Method Detail

### isDirty

    public boolean isDirty()

  Has the object changed since last replication and is not in a locked state

  Specified by:
    `isDirty` in interface `ReplicatedMapEntry`
  Returns:
    boolean

### isDiffable

    public boolean isDiffable()

  If this returns true, the map will extract the diff using getDiff() Otherwise it will serialize the entire object.

  Specified by:
    `isDiffable` in interface `ReplicatedMapEntry`
  Returns:
    boolean

### getDiff

    public byte[] getDiff()
                   throws java.io.IOException

  Returns a diff and sets the dirty map to false

  Specified by:
    `getDiff` in interface `ReplicatedMapEntry`
  Returns:
    byte[]
  Throws:
    `java.io.IOException`

### getClassLoaders

    public java.lang.ClassLoader[] getClassLoaders()

### applyDiff

    public void applyDiff(byte[] diff,
                          int offset,
                          int length)
                   throws java.io.IOException,
                          java.lang.ClassNotFoundException

  Applies a diff to an existing object.

  Specified by:
    `applyDiff` in interface `ReplicatedMapEntry`
  Parameters:
    `diff` - byte[]
    `offset` - int
    `length` - int
  Throws:
    `java.io.IOException`
    `java.lang.ClassNotFoundException`

### resetDiff

    public void resetDiff()

  Resets the current diff state and resets the dirty flag

  Specified by:
    `resetDiff` in interface `ReplicatedMapEntry`

### lock

    public void lock()

  Lock during serialization

  Specified by:
    `lock` in interface `ReplicatedMapEntry`

### unlock

    public void unlock()

  Unlock after serialization

  Specified by:
    `unlock` in interface `ReplicatedMapEntry`

### setOwner

    public void setOwner(java.lang.Object owner)

  Description copied from interface: `ReplicatedMapEntry`
  This method is called after the object has been created on a remote map. On this method, the object can initialize itself for any data that wasn't

  Specified by:
    `setOwner` in interface `ReplicatedMapEntry`
  Parameters:
    `owner` - Object

### isPrimarySession

    public boolean isPrimarySession()

  returns true if this session is the primary session, if that is the case, the manager can expire it upon timeout.

  Specified by:
    `isPrimarySession` in interface `ClusterSession`
  Returns:
    True if this session is primary

### setPrimarySession

    public void setPrimarySession(boolean primarySession)

  Sets whether this is the primary session or not.

  Specified by:
    `setPrimarySession` in interface `ClusterSession`
  Parameters:
    `primarySession` - Flag value

### setIdInternal

    public void setIdInternal(java.lang.String id)

  Set the session identifier for this session without notify listeners.

  Parameters:
    `id` - The new session identifier

### setId

    public void setId(java.lang.String id)

  Set the session identifier for this session.

  Specified by:
    `setId` in interface `Session`
  Overrides:
    `setId` in class `StandardSession`
  Parameters:
    `id` - The new session identifier

### getLastAccessedTimeInternal

    public long getLastAccessedTimeInternal()

  Return the last client access time without invalidation check

  Specified by:
    `getLastAccessedTimeInternal` in interface `Session`
  Overrides:
    `getLastAccessedTimeInternal` in class `StandardSession`
  See Also:
    `StandardSession.getLastAccessedTime().`

### setMaxInactiveInterval

    public void setMaxInactiveInterval(int interval)

  Description copied from class: `StandardSession`
  Set the maximum time interval, in seconds, between client requests before the servlet container will invalidate the session. A negative time indicates that the session should never time out.

  Specified by:
    `setMaxInactiveInterval` in interface `javax.servlet.http.HttpSession`
  Specified by:
    `setMaxInactiveInterval` in interface `Session`
  Overrides:
    `setMaxInactiveInterval` in class `StandardSession`
  Parameters:
    `interval` - The new maximum interval

### setMaxInactiveInterval

    public void setMaxInactiveInterval(int interval,
                                       boolean addDeltaRequest)

### setNew

    public void setNew(boolean isNew)

  Set the `isNew` flag for this session.

  Specified by:
    `setNew` in interface `Session`
  Overrides:
    `setNew` in class `StandardSession`
  Parameters:
    `isNew` - The new value for the `isNew` flag

### setNew

    public void setNew(boolean isNew,
                       boolean addDeltaRequest)

### setPrincipal

    public void setPrincipal(java.security.Principal principal)

  Set the authenticated Principal that is associated with this Session. This provides an `Authenticator` with a means to cache a previously authenticated Principal, and avoid potentially expensive `Realm.authenticate()` calls on every request.

  Specified by:
    `setPrincipal` in interface `Session`
  Overrides:
    `setPrincipal` in class `StandardSession`
  Parameters:
    `principal` - The new Principal, or `null` if none

### setPrincipal

    public void setPrincipal(java.security.Principal principal,
                             boolean addDeltaRequest)

### isValid

    public boolean isValid()

  Return the `isValid` flag for this session.

  Specified by:
    `isValid` in interface `Session`
  Overrides:
    `isValid` in class `StandardSession`

### expire

    public void expire(boolean notify)

  Perform the internal processing required to invalidate this session, without triggering an exception if the session has already expired.

  Overrides:
    `expire` in class `StandardSession`
  Parameters:
    `notify` - Should we notify listeners about the demise of this session?

### expire

    public void expire(boolean notify,
                       boolean notifyCluster)

### recycle

    public void recycle()

  Release all object references, and initialize instance variables, in preparation for reuse of this object.

  Specified by:
    `recycle` in interface `Session`
  Overrides:
    `recycle` in class `StandardSession`

### toString

    public java.lang.String toString()

  Return a string representation of this object.

  Overrides:
    `toString` in class `StandardSession`

### readExternal

    public void readExternal(java.io.ObjectInput in)
                      throws java.io.IOException,
                             java.lang.ClassNotFoundException

  Specified by:
    `readExternal` in interface `java.io.Externalizable`
  Throws:
    `java.io.IOException`
    `java.lang.ClassNotFoundException`

### readObjectData

    public void readObjectData(java.io.ObjectInputStream stream)
                        throws java.lang.ClassNotFoundException,
                               java.io.IOException

  Read a serialized version of the contents of this session object from the specified object input stream, without requiring that the StandardSession itself have been serialized.

  Overrides:
    `readObjectData` in class `StandardSession`
  Parameters:
    `stream` - The object input stream to read from
  Throws:
    `java.lang.ClassNotFoundException` - if an unknown class is specified
    `java.io.IOException` - if an input/output error occurs

### readObjectData

    public void readObjectData(java.io.ObjectInput stream)
                        throws java.lang.ClassNotFoundException,
                               java.io.IOException

  Throws:
    `java.lang.ClassNotFoundException`
    `java.io.IOException`

### writeObjectData

    public void writeObjectData(java.io.ObjectOutputStream stream)
                         throws java.io.IOException

  Write a serialized version of the contents of this session object to the specified object output stream, without requiring that the StandardSession itself have been serialized.

  Overrides:
    `writeObjectData` in class `StandardSession`
  Parameters:
    `stream` - The object output stream to write to
  Throws:
    `java.io.IOException` - if an input/output error occurs

### writeObjectData

    public void writeObjectData(java.io.ObjectOutput stream)
                         throws java.io.IOException

  Throws:
    `java.io.IOException`

### resetDeltaRequest

    public void resetDeltaRequest()

### getDeltaRequest

    public DeltaRequest getDeltaRequest()

### removeAttribute

    public void removeAttribute(java.lang.String name,
                                boolean notify)

  Remove the object bound with the specified name from this session. If the session does not have an object bound with this name, this method does nothing.

  After this method executes, and if the object implements `HttpSessionBindingListener`, the container calls `valueUnbound()` on the object.

  Overrides:
    `removeAttribute` in class `StandardSession`
  Parameters:
    `name` - Name of the object to remove from this session.
    `notify` - Should we notify interested listeners that this attribute is being removed?
  Throws:
    `java.lang.IllegalStateException` - if this method is called on an invalidated session

### removeAttribute

    public void removeAttribute(java.lang.String name,
                                boolean notify,
                                boolean addDeltaRequest)

### setAttribute

    public void setAttribute(java.lang.String name,
                             java.lang.Object value)

  Bind an object to this session, using the specified name. If an object of the same name is already bound to this session, the object is replaced.

  After this method executes, and if the object implements `HttpSessionBindingListener`, the container calls `valueBound()` on the object.

  Specified by:
    `setAttribute` in interface `javax.servlet.http.HttpSession`
  Overrides:
    `setAttribute` in class `StandardSession`
  Parameters:
    `name` - Name to which the object is bound, cannot be null
    `value` - Object to be bound, cannot be null
  Throws:
    `java.lang.IllegalArgumentException` - if an attempt is made to add a non-serializable object in an environment marked distributable.
    `java.lang.IllegalStateException` - if this method is called on an invalidated session

### setAttribute

    public void setAttribute(java.lang.String name,
                             java.lang.Object value,
                             boolean notify,
                             boolean addDeltaRequest)

### readObject

    protected void readObject(java.io.ObjectInputStream stream)
                       throws java.lang.ClassNotFoundException,
                              java.io.IOException

  Read a serialized version of this session object from the specified object input stream.

  IMPLEMENTATION NOTE : The reference to the owning Manager is not restored by this method, and must be set explicitly.

  Overrides:
    `readObject` in class `StandardSession`
  Parameters:
    `stream` - The input stream to read from
  Throws:
    `java.lang.ClassNotFoundException` - if an unknown class is specified
    `java.io.IOException` - if an input/output error occurs

### writeExternal

    public void writeExternal(java.io.ObjectOutput out)
                       throws java.io.IOException

  Specified by:
    `writeExternal` in interface `java.io.Externalizable`
  Throws:
    `java.io.IOException`

### writeObject

    protected void writeObject(java.io.ObjectOutputStream stream)
                        throws java.io.IOException

  Write a serialized version of this session object to the specified object output stream.

  IMPLEMENTATION NOTE : The owning Manager will not be stored in the serialized representation of this Session. After calling `readObject()`, you must set the associated Manager explicitly.

  IMPLEMENTATION NOTE : Any attribute that is not Serializable will be unbound from the session, with appropriate actions if it implements HttpSessionBindingListener. If you do not want any such attributes, be sure the `distributable` property of the associated Manager is set to `true`.

  Overrides:
    `writeObject` in class `StandardSession`
  Parameters:
    `stream` - The output stream to write to
  Throws:
    `java.io.IOException` - if an input/output error occurs

### getAttributeInternal

    protected java.lang.Object getAttributeInternal(java.lang.String name)

  Return the value of an attribute without a check for validity.

### removeAttributeInternal

    protected void removeAttributeInternal(java.lang.String name,
                                           boolean notify,
                                           boolean addDeltaRequest)

### getLastTimeReplicated

    protected long getLastTimeReplicated()

### getVersion

    public long getVersion()

  Description copied from interface: `ReplicatedMapEntry`
  For accuracy checking, a serialized attribute can contain a version number This number increases as modifications are made to the data. The replicated map can use this to ensure accuracy on a periodic basis

  Specified by:
    `getVersion` in interface `ReplicatedMapEntry`
  Returns:
    long - the version number or -1 if the data is not versioned

### setLastTimeReplicated

    protected void setLastTimeReplicated(long lastTimeReplicated)

### setVersion

    public void setVersion(long version)

  Description copied from interface: `ReplicatedMapEntry`
  Forces a certain version to a replicated map entry

  Specified by:
    `setVersion` in interface `ReplicatedMapEntry`
  Parameters:
    `version` - long

### setAccessCount

    protected void setAccessCount(int count)

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.