视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Tomcat中的Session
2020-11-09 13:32:44 责编:小采
文档


废话少说,先来看看保存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") %>



最终效果如图所示:

查看大图请点击这里

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

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

–end–

下载本文
显示全文
专题