当前位置:Gxlcms > mysql > Tomcat中的Session

Tomcat中的Session

时间:2021-07-01 10:21:17 帮助过:13人阅读

废话少说,先来看看保存session的4种方案 1.在Web容器的内存中,最常见,最原始的,纯天然,无人工的。 2.跟上面第一种差不多,只是保存在文件里了,如果忽然down机,下次重启session还在。 3.通过java JDBC保存在数据库里面。 4.通过中央式缓存 Memcached

废话少说,先来看看保存session的4种方案
1.在Web容器的内存中,最常见,最原始的,纯天然,无人工的。
2.跟上面第一种差不多,只是保存在文件里了,如果忽然down机,下次重启session还在。
3.通过java JDBC保存在数据库里面。
4.通过中央式缓存 Memcached 集中管理。

1、2就不讨论了,说一下3、4 各有优势

第3点的优势:每台机器连接相同的数据库 session 将集中被管理起来,不会在每个Tomcat之间互相大量复制,减少系统的整个运行压力,另外,在持久化的过程中使用的是 org.apache.catalina.session.JDBCStore对象 Tomcat 下 catalina.jar的一部分,不需要另外引入其他api,并且session数据一直保存在数据库中,而第4点 Memcached 重启 里面的回话也就销毁,需要另外引入API,但是从执行效率上看大于第3种。
所以可以根据你的需要选择不同的方案。

查找了网上N多资料,都是互相抄袭并且非常严重!!连错的地方都一起抄过来,我为国人感到可耻!最后还是从一个日本blog上看见了一篇日志得到了启发。
查看地址:http://d.hatena.ne.jp/stdcall/20070102/1167688088

以下是测试程序。环境:tomcat5.5 / MySQL ===

========================Server.xml =============================
path="/test"
reloadable="true"
source="org.eclipse.jst.j2ee.server:test"
backgroundProcessorDelay="1" >
distributable="true"
duplicates="-1"
saveOnRestart="true"
maxActive="-1"
maxActiveSessions="0"
minIdleSwap="-1"
maxIdleSwap="-1"
maxIdleBackup="-1"
maxInactiveInterval="-1"
sessionCounter="-1" >

checkInterval="1"
connectionURL="jdbc:mysql://172.16.2.211/test?user=root1&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" />


========================MySQL 建表语句 =============================
CREATE TABLE `tomcat_session` (
`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=InnoDB DEFAULT CHARSET=utf8;

=======================JSP 测试程序 =============================



Insert title here


session id = <%= session.getId() %>


<% Integer counter = (Integer)session.getAttribute("counter");
counter = ( counter == null )
? new Integer(1) : new Integer(counter.intValue() + 1);
session.setAttribute("counter",counter);
%>
counter = <%= session.getAttribute("counter") %>


最终效果如图所示:

https://img.gxlcms.com//Uploads-s/new/2019-09-30-201930/092S33E0-0.jpg

查看大图请点击这里

参考资料:http://www.blogjava.net/wangxinsh55/archive/2009/03/06/258199.html

参考资料:http://www.jaxmao.org/tomcat-docs/cluster-howto.html

–end–

人气教程排行