org.apache.axis2.context
Class SessionContext

java.lang.Object
  extended by org.apache.axis2.context.AbstractContext
      extended by org.apache.axis2.context.SessionContext
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, SafeSerializable

public class SessionContext
extends AbstractContext
implements java.io.Externalizable, SafeSerializable

All the engine components are stateless across the executions and all the states should be kept in the Contexts, there are three context Global, Session and Message.

See Also:
Serialized Form

Field Summary
 long sessionContextTimeoutInterval
           
 
Fields inherited from class org.apache.axis2.context.AbstractContext
COPY_PROPERTIES, lastTouchedTime, parent, properties
 
Constructor Summary
SessionContext()
           
SessionContext(AbstractContext parent)
           
 
Method Summary
 void addServiceContext(ServiceContext serviceContext)
           
 void addServiceGroupContext(ServiceGroupContext serviceGroupContext)
           
protected  void finalize()
           
 java.lang.String getCookieID()
           
 long getLastTouchedTime()
           
 ConfigurationContext getRootContext()
           
 ServiceContext getServiceContext(AxisService axisService)
           
 java.util.Iterator getServiceGroupContext()
           
 ServiceGroupContext getServiceGroupContext(java.lang.String serviceGroupID)
           
 void init(AxisConfiguration axisConfiguration)
           
 void readExternal(java.io.ObjectInput inObject)
          Restore the contents of the MessageContext that was previously saved.
 void setCookieID(java.lang.String cookieID)
           
 void touch()
          ServiceContext and ServiceGroupContext are not getting automatically garbage collectible.
 void writeExternal(java.io.ObjectOutput o)
          Save the contents of this object.
 
Methods inherited from class org.apache.axis2.context.AbstractContext
clearPropertyDifferences, flush, getLocalProperty, getParent, getProperties, getProperty, getPropertyDifferences, getPropertyNames, getPropertyNonReplicable, isAncestor, mergeProperties, removeProperty, removePropertyNonReplicable, setLastTouchedTime, setNonReplicableProperty, setParent, setProperties, setProperty
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sessionContextTimeoutInterval

public long sessionContextTimeoutInterval
Constructor Detail

SessionContext

public SessionContext(AbstractContext parent)
Parameters:
parent -

SessionContext

public SessionContext()
Method Detail

init

public void init(AxisConfiguration axisConfiguration)
          throws AxisFault
Throws:
AxisFault

getServiceContext

public ServiceContext getServiceContext(AxisService axisService)

addServiceContext

public void addServiceContext(ServiceContext serviceContext)

addServiceGroupContext

public void addServiceGroupContext(ServiceGroupContext serviceGroupContext)

getServiceGroupContext

public ServiceGroupContext getServiceGroupContext(java.lang.String serviceGroupID)

getCookieID

public java.lang.String getCookieID()

setCookieID

public void setCookieID(java.lang.String cookieID)

touch

public void touch()
ServiceContext and ServiceGroupContext are not getting automatically garbage collectible. And there is no specific way for some one to go and make it garbage collectable. So the current solution is to make them time out. So the logic is that, there is a timer task in each and every service group which will check for the last touched time. And if it has not been touched for some time, the timer task will remove it from the memory. The touching logic happens like this. Whenever there is a call to addMessageContext in the operationContext it will go and update operationCOntext -> serviceContext -> serviceGroupContext.

Overrides:
touch in class AbstractContext

getLastTouchedTime

public long getLastTouchedTime()
Overrides:
getLastTouchedTime in class AbstractContext

getServiceGroupContext

public java.util.Iterator getServiceGroupContext()

finalize

protected void finalize()
                 throws java.lang.Throwable
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable

writeExternal

public void writeExternal(java.io.ObjectOutput o)
                   throws java.io.IOException
Save the contents of this object.

NOTE: Transient fields and static fields are not saved.

Specified by:
writeExternal in interface java.io.Externalizable
Parameters:
out - The stream to write the object contents to
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput inObject)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Restore the contents of the MessageContext that was previously saved.

NOTE: The field data must read back in the same order and type as it was written. Some data will need to be validated when resurrected.

Specified by:
readExternal in interface java.io.Externalizable
Parameters:
in - The stream to read the object contents from
Throws:
java.io.IOException
java.lang.ClassNotFoundException

getRootContext

public ConfigurationContext getRootContext()
Specified by:
getRootContext in class AbstractContext


Copyright © 2007 Apache Web Services Project. All Rights Reserved.