Package org.apache.axis2.context
Class SessionContext
java.lang.Object
org.apache.axis2.context.AbstractContext
org.apache.axis2.context.SessionContext
- All Implemented Interfaces:
Externalizable,Serializable,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:
-
Field Summary
FieldsFields inherited from class org.apache.axis2.context.AbstractContext
COPY_PROPERTIES, lastTouchedTime, parent, properties -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddServiceContext(ServiceContext serviceContext) voidaddServiceGroupContext(ServiceGroupContext serviceGroupContext) protected voidfinalize()longgetServiceContext(AxisService axisService) getServiceGroupContext(String serviceGroupID) voidinit(AxisConfiguration axisConfiguration) voidreadExternal(ObjectInput inObject) Restore the contents of the MessageContext that was previously saved.voidsetCookieID(String cookieID) voidtouch()ServiceContext and ServiceGroupContext are not getting automatically garbage collectible.voidSave 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
-
Field Details
-
sessionContextTimeoutInterval
public long sessionContextTimeoutInterval
-
-
Constructor Details
-
SessionContext
- Parameters:
parent-
-
SessionContext
public SessionContext()
-
-
Method Details
-
init
- Throws:
AxisFault
-
getServiceContext
-
addServiceContext
-
addServiceGroupContext
-
getServiceGroupContext
-
getCookieID
-
setCookieID
-
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:
touchin classAbstractContext
-
getLastTouchedTime
public long getLastTouchedTime()- Overrides:
getLastTouchedTimein classAbstractContext
-
getServiceGroupContext
-
finalize
-
writeExternal
Save the contents of this object. NOTE: Transient fields and static fields are not saved.- Specified by:
writeExternalin interfaceExternalizable- Parameters:
out- The stream to write the object contents to- Throws:
IOException
-
readExternal
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:
readExternalin interfaceExternalizable- Parameters:
in- The stream to read the object contents from- Throws:
IOExceptionClassNotFoundException
-
getRootContext
- Specified by:
getRootContextin classAbstractContext
-