您好,欢迎访问一九零五行业门户网

Tomcat 中的 Session

废话少说,先来看看保存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 =
counter = ( counter == null )
        ? new integer(1) : new integer(counter.intvalue() + 1);
    session.setattribute(counter,counter);
%>
counter =

其它类似信息

推荐信息