废话少说,先来看看保存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 =============================
========================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 =
counter =
最终效果如图所示:
查看大图请点击这里
参考资料:http://www.blogjava.net/wangxinsh55/archive/2009/03/06/258199.html
参考资料:http://www.jaxmao.org/tomcat-docs/cluster-howto.html
–end–
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!