当前位置: 代码迷 >> MySQL >> 试验:
  详细解决方案

试验:

热度:191   发布时间:2016-05-05 16:39:13.0
Tomcat session保存至MySQL

实验环境为tomcat7.0.64 mysql 5

准备工作

1、需要创建session表

?????

CREATE TABLE `tomcat_sessions` ( 	`session_id` varchar(100) NOT NULL,  	`valid_session` char(1) NOT NULL,  	`max_inactive` int(11) NOT NULL,  	`last_access` bigint(20) NOT NULL,  	`app_name` varchar(255) DEFAULT NULL,  	`session_data` mediumblob,  	PRIMARY KEY (`session_id`),  	KEY `kapp_name` (`app_name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

?

2、将mysql驱动放到$CATALINA_HOME/lib目录下

????? 这个就不用多费口舌了

3、修改context.xml文件

<Manager className="org.apache.catalina.session.PersistentManager"                   maxIdleBackup="1"        minIdleSwap="0"        maxIdleSwap="0"        processExpiresFrequency="1"        saveOnRestart='true'>        <Store className="org.apache.catalina.session.JDBCStore"                                connectionURL="jdbc:mysql://localhost:3306/test?user=root&amp;password=123456"                driverName="com.mysql.jdbc.Driver"                sessionAppCol="app_name"                sessionDataCol="session_data"                sessionIdCol="session_id"                sessionLastAccessedCol="last_access"                sessionMaxInactiveCol="max_inactive"                sessionTable="tomcat_sessions"                sessionValidCol="valid_session" /></Manager>

?

试验:

启动tomcat??? catalinar.bat run

写两个jsp页面,一个页面里写session.setAttribute("id":"0001");session.setAttribute("name":"jaychang");

?

访问这个jsp,观察MySQL的test数据库的tomcat_sessions表数据


?说明实验成功了!(注意:上面session有效时间应为session失效时间,是我写错了 ,即从用户发出请求开始到session销毁的时间为1800秒)

?

?

再整一个jsp,?<%session.invalidate();%>,访问下

?

发现数据库里这条记录就消失了。

?

至此Tomcat 配置 session保存在MySQL的配置方法,就简单说到这里,希望对您有帮助。如果有好的建议,欢迎讨论。?

?

参考:

http://stackoverflow.com/questions/17305128/tomcat-user-session-storage-with-jdbcstore-immediate-session-timeout

?

https://tomcat.apache.org/tomcat-7.0-doc/config/manager.html

  相关解决方案