公告 |
求真务实打基础, 宁缺毋滥读好书。
数据挖掘青年(DMman) |
链接 |
|
Blog信息 |
blog名称:DMman(数据挖掘青年) 日志总数:102 评论数量:564 留言数量:57 访问次数:1752236 建立时间:2007年4月9日 |

| |
[Java EE]转:Tomcat服务器配置参考(12)Manager组件 网上资源
数据挖掘青年 发表于 2007/4/19 21:51:36 |
概述
Manger元素代表用来产生,维护HTTP session的session manager。
Manager元素可以嵌套在Context组件中。如果不包含它,会自动创建一个缺省的Manager配置,这对大多数需求都是足够的。
属性
公共属性
所有Manager的实现支持如下属性:
属性
描述
className
实现的Java类名。这个类必须实现org.apache.catalina.Manager接口。如果没有指定,使用标准值。
distributable
在分布式应用中,如果想加上Servlet Specification中描述的限制,设为true。这意味着所有的session属性必须实现java.io.Serializable接口。如果不想加上这些限制,设为false注意:根据/web-inf/web.xml中是否存在<distributable>元素,这个属性值自动继承;
标准实现
Tomcat为Manger提供了两个标准实现。缺省的实现存储活动的session,可选的实现存储被交换出来的活动session(另外还存储tomcat重启前后的session),存储的位置由嵌套的Store元素定义。
标准的Manager实现
Manger的标准实现是org.apache.catalina.session.StandardManger。它支持如下的附加属性:
属性
描述
algorithm
用于计算session标识符的消息摘要算法。这个值必须被java.security.MessageDigest类支持。如果没有指定,缺省值是“MD5”
checkInterval
检查session是否过期的时间间隔,以秒为单位,缺省值是60秒
debug
与Manager相关的Logger记录的调试信息的详细程度,数字越大,输出越详细。如果没有指定,缺省值为0。
entropy
在创建session标识符中随机数发生器的种子。为字符串值。如果没有指定,计算一个不完全有用的值。在安全要求很高的环境中,应该指定一个长的字符串。
maxActiveSessions
产生的最大活动session数。如果为-1,说明没有限制。
pathname
如果可能的话,当应用重启时,用于保存session状态的文件的绝对或者相对路径。缺省为“SESSIONS.ser”。参考Restart Persistence,以得到更多信息
randomClass
实现java.util.Random的Java类名。如果没有指定,缺省为java.security.SecureRandom
Persisten Manager实现
警告-这个实现还没有经过细致的测试,只能用于实验用途。
Manger的persistent实现是org.apache.catalina.session.PersistentManager。除了通常的创建和删除session以外,PersistentManger还能够将空闲的活动session交换到永久的存贮介质上面。当tomcat正常重启时,还可以将session保存下来。实际使用的存储机制由嵌套的store元素定义。使用PersistentManager时,store元素必须定义。
Manager的这个实现支持如下的附加属性:
属性
描述
algorithm
产生session identifier的消息摘要算法的名称。这个值必须被java.security.MessageDigest类支持。如果没有指定,缺省值为“MD5”。
checkInterval
检查session是否过期的时间间隔,以秒为单位,缺省值为60秒。
className
实现的Java类名。这个类必须实现 org.apache.catalina.Manager接口。对于persistent manager实现,必须指定为org.apache.catalina.session.PersistentManager。
debug
与Manager相关联的Logger记录信息的详细程度。数字越大,输出越详细。如果不指定,缺省值为0。
entropy
在创建session标识符中随机数发生器的种子。为字符串值。如果没有指定,计算一个不完全有用的值。在安全要求很高的环境中,应该指定一个长的字符串。
maxActiveSessions
产生的最大活动session数。如果为-1,说明没有限制。
maxIdleBackup
自上次访问某个session到这个session可以被保存到存储介质上的时间间隔。以秒为单位,如果为-1,则disable这个特征。缺省情况下,这个特征是disable的。
maxIdleSwap
自上次访问某个session到session应该被保存到存储介质上,并从服务器的内存中交换出来之间的时间间隔。如果为-1,则disable这个特征。如果使能了这个特征,指定值应该大于或者等于maxIdleBackup。缺省情况下这个特征是disable的。
minIdleSwap
自上次访问某个session到session可以被保存到存储介质上,并从服务器的内存中交换出来之间的时间间隔。如果为-1,说明可以在任何时间交换出来。指定值应该小于maxIdleSwap。缺省情况下这个特征是disable的。
randomClass
实现java.util.Random的Java类名。如果没有指定,缺省为java.security.SecureRandom
saveOnRestart
当Tomcat关闭的时候,是否应该保存所有的session?Tomcat重启(或者应用重新载入)后是否应该恢复所有的session。缺省情况下为true。
为了成功使用PersistentManager,你必须嵌套一个<Store>元素,如下所述。
嵌套元素
标准Manager实现
如果使用Standard Manager实现,<Manager>元素中不需要嵌套任何元素
Persistent Manager实现如果使用Persistent Manager实现,你必须在<Manager>元素中嵌套一个<Store>元素。<Store> 元素定义了数据存储的特性。目前<Store>元素有两个实现,下面描述了它们的特征。
基于文件的存储
基于文件的存储实现将交换出来的session存储在指定目录下的单个的文件中(根据session identifier命名)。因此,当活动session数目增加时,可能会碰到扩展性的问题,这种方法应该主要用在实验系统中。
为了配置基于文件的存储,在<Manager>元素中嵌套一个<store>元素,并具有如下属性:
属性
描述
checkInterval
检查当前被交换出来的session是否过期的时间间隔,缺省值为60秒。
className
实现的Java类名。这个类必须实现org.apache.catalina.Store接口。使用基于文件的存储时,必须将这个属性指定为org.apache.catalina.session.FileStore.
debug
与Store元素相关联的Logger的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省值为0。
directory
用来存储单个session文件的目录,可以是绝对或者相对路径(相对于这个web应用的临时工作目录)。如果没有指定,使用container指定的临时工作目录。
基于JDBC的存储
基于JDBC的存储实现将交换出来的session存储在预先配置好的数据库表中,每一行存储一个session。如果有大量的session需要交换出来,这种实现比基于文件的存储性能要好。
为了使用基于JDBC的存储,在<Manager>元素中嵌套一个<Store>元素,并配置如下属性:
属性
描述
checkInterval
检查当前被交换出来的session是否过期的时间间隔,缺省值为60秒。
className
实现的Java类名。该类必须实现org.apache.catalina.Stroe接口。为了使用基于JDBC的存储,这个指必须指定为org.apache.catalina.session.JDBCStore.
connectionURL
建立数据库连接的URL,传递给JDBC驱动。
debug
与Store元素相关联的Logger的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省值为0。
driverName
使用的JDBC驱动的Java类名
sessionAppCol
session表中的数据库列名,包含Engine,Host和Web应用上下文的名称,格式为/Engine/Host/Context
sessionDataCol
session表中的数据库列名,包含交换出来的session的所有属性序列化以后的形式。列类型必须能够接受二进制对象(称作BLOB)
sessionIdCol
Session表中的数据库列名,包含交换出来的session的session标识符。该列必须接受字符串数据,并且至少要能装下session标识符的所有字符(通常为32)
sessionLastAccessedCol
session表中的数据库列名,包含session的lastAccessedTime属性。该列必须接受Java长整型数据(64bits)
sessionMaxInactiveCol
session表中的数据库列名,包含session的maxInactiveInterval属性。该列必须接受Java整型数据(32bits)
sessionTable
用来存储交换出来的session的表名。这个表至少必须包含上面列出的列。
sessionValidCol
session表中的列名,包含一个标志,表名交换出来的session是否有效。该列必须接受单个字符。
在第一次使用基于JDBC的存储之前,必须创建用来存储session的表。具体的SQL命令取决于你使用的数据库,但一般来说,具有象下面的格式:
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
create table tomcat_sessions (
session_id varchar(100) not null primary key,
valid_session char(1) not null,
max_inactive int not null,
last_access bigint not null,
app_name varchar(255),
session_data mediumblob,
KEY kapp_name(app_name)
);
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
为了使基于JDBC的存储成功地连接到你的数据库,JDBC驱动对Tomcat的内置class loader必须是可见的。一般来说,这意味着你必须把包含驱动的JAR文件放在$CATALINA_HOME/server/lib下面(如果你的应用不需要使用JDBC驱动)或者放在$CATALINA_HOME/common/lib目录下面(如果希望将驱动和web应用共享)
专有特征
Restart Persistence
每当Catalina被正常关闭后重新启动,或者应用被重新载入,标准的Manager实现会尝试将目前所有的活动session序列化到一个磁盘文件中,通过pathname属性。当应用完成重载以后,所有存储的session被deserialized,激活(假定session同时还没有过期);
为了成功恢复session属性的状态,所有的属性必须实现java.io.Serializable接口。通过在/WEB-INF/web.xml中包含<distributable>元素,可以要求Manager加上这个限制。 |
|
|