Apusic默认的Session存储是采用文件数据库的,当用户想更改Session存储方式时,可以将%DOMAIN_HOME%\config\apusic.conf中的文件数据库存储服务替换成其它存储方式,配置如下:
1)默认的Session文件存储服务配置:
<SERVICE CLASS="com.apusic.web.session.FileSessionStoreService" > <ATTRIBUTE NAME="Directory" VALUE="store/http_sessions"/> <ATTRIBUTE NAME="RebuildStoreOnShutDown" VALUE="true"/> <ATTRIBUTE NAME="RebuildStoreOnMaxFileSize" VALUE="1024"/> <ATTRIBUTE NAME="RebuildStoreOnSchedule" VALUE="0 0 18 1 * * *"/> </SERVICE>
其中:
Directory:为Sesssion存储目录。
RebuildStoreOnShutDown:是否在AAS关闭的时候进行Rebuild。
RebuildStoreOnMaxFileSize:确定在session文件达到多大的时候,进行Rebuild。单位为MB
RebuildStoreOnSchedule:用于定时Rebuild,值是一个时间的表达式。
提示 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
时间表达式的说明
每一字段可以是上述范围内的一个整数,或者为“*”,当为一个整数时,表示一个确定的时间,“*”表示该字段任意。各字段用空格隔开。 如:0 0 18 1 * * * 表示每年每月的一号下午6点整。 当最后的周字段被设置时,其会覆盖日字段,表示每周的周几。 如:当前日期为2011-6-22,星期三,若时间格式为:“ 0 0 18 20 * * 1” 表示从当前日期,即6-22日开始,每周的周一下午6点整。也就是下一次时间为2011-6-27 18:0:0。 |
三个策略,可以同时配置,同时生效。也可以配置其中的任意几个。
若三个都没有配置,则使用RebuildStoreOnMaxFileSize策略,默认的session文件大小为1024MB。
2)嵌入式数据库存储配置:
<SERVICE CLASS="com.apusic.web.session.DBSessionStoreService" > <ATTRIBUTE NAME="Directory" VALUE="store/http_sessions"/> <ATTRIBUTE NAME="RebuildStoreOnShutDown" VALUE="true"/> <ATTRIBUTE NAME="RebuildStoreOnMaxFileSize" VALUE="1024"/> <ATTRIBUTE NAME="RebuildStoreOnSchedule" VALUE="0 0 18 1 * * *"/> </SERVICE>
其中属性同上(文件存储)。
3)关系数据库存储配置:
<SERVICE CLASS="com.apusic.web.session.SQLSessionStoreService" > <ATTRIBUTE NAME="DataSourceName" VALUE="java:/jdbc/apusic"/> <ATTRIBUTE NAME="TableName" VALUE="t_httpsession"/> </SERVICE>
其中属性DataSourceName为数据源的JNDI名,TableName为Session存储的数据库中表的名称。
4)分布式存储:
<SERVICE CLASS="com.apusic.web.session.CacheSessionStoreService" > <ATTRIBUTE NAME="ServerAddress" VALUE="192.168.6.66:11211,192.168.6.67:11211"/> <ATTRIBUTE NAME="BackupServerAddress" VALUE="192.168.6.76:11211,192.168.6.77:11211"/> <ATTRIBUTE NAME="Weights" VALUE="1,2"/> <ATTRIBUTE NAME="Failover" VALUE="True"/> <ATTRIBUTE NAME="ConnectionPoolSize" VALUE="1"/> <ATTRIBUTE NAME="BinaryProtocol" VALUE="False"/> <ATTRIBUTE NAME="TokyoTyrant" VALUE="False"/> <ATTRIBUTE NAME="ConsistentHash" VALUE="False"/> <ATTRIBUTE NAME="LocalCacheImpl" VALUE="2"/> <ATTRIBUTE NAME="LocalCacheSize" VALUE="20480"/> <ATTRIBUTE NAME="SyncInterval" VALUE="2"/> </SERVICE>
其中:
ServerAddress:分布式Session存储数据库节点列表;形如“节点1:port,节点2:port“的字符串,节点间用逗号隔开。
BackupServerAddress : 备份节点列表,格式同上,备份节点顺序和主节点顺序一一对应。
Weights : 节点权重,大于零。形如:“1,2”的字符串,权重间用逗号隔开。
Failover:是否为失效转移模式。当为失效转移模式时,当一个节点挂掉后,它的key值将被分配到其它节点。若为非失效转移时,当某个节点挂掉的时候,不会从节点列表移除,请求也不会转移到下一个有效节点,而是直接将请求置为失败。
ConnectionPoolSize :NIO连接池大小,默认为1。
BinaryProtocol : 是否使用二进制协议。默认为False。
TokyoTyrant :是否使用TokyoTyrant服务器,默认为False。
ConsistentHash : 是否使用一致性哈希,默认为False。
LocalCacheImpl : 使用本地缓存的那种实现方式,0表示不使用缓存,2表示使用第二种缓存实现方式。
LocalCacheSize : 开启本地缓存后,设置缓存Sesion的个数,默认值为204800。
SyncInterval : 开启本地缓存后,缓存同步到存储的时间间隔,默认为2秒。
5)redis存储:
<SERVICE CLASS="com.apusic.web.session.RedisSessionStoreService" > <ATTRIBUTE NAME="ConfigPath" VALUE="config/redis_session.properties"/> <ATTRIBUTE NAME="Shard" VALUE="false"/> </SERVICE>
其中:
ConfigPath是redis客户端的参数配置文件。
shard表示是否采用客户端集群,true表示采用,false表示采用单台redis服务器(默认是false)。
也可以开启本地缓存实现,配置与说明同 CacheSessionStoreService中属性的说明。
redis_session.properties配置:
非客户端集群模式,只需修改config/redis_session.properties文件中的host和port为相应redis服务器的ip和端口。
客户端集群模式,需先修改 apusic.conf中RedisSessionStoreService服务中属性Shard的值为true,然后修改config/redis_session.properties文件中的host和port及shareInfoList中的值为相应redis服务器的ip和端口。