JAVA WEB开发中,跨服务器如何保证session的延续? 在WEB开发中,跨服务器如何控制session的延续? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉不成,session应该只针对一个服务器 因为SessionId是一致的,所以你可以在跨服务器间建立查询机制,通过SessionId,和key查询想要的数据 听说weblogic可以配置session复制?是不是有这么一说? 你说的应该是多个服务器集群的session复制吧?这个所有的Web服务器厂商都有这样的功能 session复制的方法,一种是基于db的,一种是基于memory的session replication 的数据库持久化配置,也可以不用编程的: 1、创建数据库 create database was_sess; 2、在管理控制台创建 datasource Resource -> JDBC -> JDBC provider -> data sources -> jndi: jdbc/sessions 3、在管理控制台配置session replication Servers -> Application servers -> app name -> session management -> distributed environment -> in database 设置数据源 JNDI 名称、用户名、密码、行大小即可(DB2专用)、是否使用多行(推荐,特别Session Object里面内容太多的时候)即可。 跨服务器之间的Session共享方案需求变得迫切起来,最终催生了多种解决方案,下面列举4种较为可行的方案进行对比探讨:1. 基于NFS的Session共享NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的 本地session目录即可,缺点是NFS依托于复杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。2. 基于数据库的Session共享首选当然是大名鼎鼎的Mysql数据库,并且建议使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强,相信大家普遍在 使用,它的缺点在于session的并发读写能力取决于Mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除 session记录,当并发过高时容易出现表锁,虽然我们可以选择行级锁的表引擎,但不得不否认使用数据库存储Session还是有些杀鸡用牛刀的架势。3. 基于Cookie的Session共享这个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密、序列化后以Cookie的方式,统一 种植在根域名下(如:.host.com),利用浏览器访问该根域名下的所有二级域名站点时,会传递与之域名对应的所有Cookie内容的特性,从而实现 用户的Cookie化Session 在多服务间的共享访问。这个方案的优点无需额外的服务器资源;缺点是由于受http协议头信心长度的限制,仅能够存储小部分的用户信息,同时Cookie化的 Session内容需要进行安全加解密(如:采用DES、RSA等进行明文加解密;再由MD5、SHA-1等算法进行防伪认证),另外它也会占用一定的带 宽资源,因为浏览器会在请求当前域名下任何资源时将本地Cookie附加在http头中传递到服务器。4. 基于Memcache的Session共享Memcache由于是一款基于Libevent多路异步I/O技术的内存共享系统,简单的Key + Value数据存储模式使得代码逻辑小巧高效,因此在并发处理能力上占据了绝对优势,目前本人所经历的项目达到2000/秒 平均查询,并且服务器CPU消耗依然不到10%。另外值得一提的是Memcache的内存hash表所特有的Expires数据过期淘汰机制,正好和Session的过期机制不谋而合,降低了过期Session数据删除的代码复杂度,对比“基于数据库的存储方案”,仅这块逻辑就给数据表产生巨大的查询压力 session复制不是一种好的方法。当集群中的session流量总和超过一台计算机的承受极限的时候,将会造成大面积崩溃。。我建议你从sna架构的角度去考虑用RequestWrapper+SessionWrapper+Filter把session给包裹掉,集成Memcache。 非常感谢各位,尤其是ouwaner,还提供了好几种方案。Memcache是一种内存数据库产品吗? 可以把session放在数据库吗 这样想在那用就在那用啊 怎么从JSP点击一个按钮,导出表格中的数据到EXCEL 纯粹的JSP上传 freemarker求助 如何定时(比如每天4点)执行某一操作 jsp不能显示四个汉字 看看这个程序,状态行出错,不知道是哪里错了 jsp与SQL Server 如何从FORM中接受有FOR 循环生成的多个VALUE值??? Gson 在servlet中用什么方法获得ckeditor编辑器的内容(可能含有图片) 数据库检索问题 请问jquery如何从后台读取一个对象,然后再页面中将对象的属性展示再表单中
是不是有这么一说?
1、创建数据库
create database was_sess;
2、在管理控制台创建 datasource
Resource -> JDBC -> JDBC provider -> data sources -> jndi: jdbc/sessions
3、在管理控制台配置session replication
Servers -> Application servers -> app name -> session management -> distributed environment -> in database
设置数据源 JNDI 名称、用户名、密码、行大小即可(DB2专用)、是否使用多行(推荐,特别Session Object里面内容太多的时候)即可。