Heim > Datenbank > MySQL-Tutorial > Hauptteil

Tomcat 中的 Session

WBOY
Freigeben: 2016-06-07 16:26:04
Original
901 Leute haben es durchsucht

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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!