Tomcat源码之Session管理

Manager接口:Session管理器。必须与一个Context容器关联。
servlet实例中HttpServletRequest,getSession();
Catalina的默认连接器中,HttpRequestBase类实现了HttpServletRequest接口。
默认下,session管理器将session对象存在内存中。可以序列化。
Session对象由HttpSession接口表示。
在catalina中,标准实现StandardSession.
servlet实例可以用: StandardSessionFacade.
Manager: 使用Session接口。

StandardSession-->Session,HttpSession,Serializable
StandardSessionFacade->HttpSession.

ManagerBase 实现了 Manager.
StandardManager, PersistentManagerBase 是ManagerBase的直接子类。


StandardManager: 当catalina运行时,StandardManager把session对象放到内存中,关闭时,把session对象存到文件中。再启动时,从文件load出来。

PersistentManagerBase子类:PersistentManager,DistributedManager.

Manager接口:
load(), 介质的session to 内存。
unload();


ManagerBase 抽象类。

session管理器管理Context容器的所有活动的session对象,存在:sessions的hashmap中。
sessions.put(session.getId(),session);

StandardManager是Manager标准实现。

StandardManager实现接口Lifecycle.
则Context容器可以控制StandardManager启动,
stop()方法实现会调用unload(). 将有效的session对象序列化到文件名SESSION.ser    CATALINA_HOME/work/Catalina or Standalone/localhost
每个Context容器都会产生这样的文件。

start()-->load()

Session管理器负责销毁失效的session对象。tomcat4中,StandardManager implements Runnable
133



















































你可能感兴趣的:(Tomcat源码之Session管理)