好记忆不如按烂笔头 ... ...
前言
书接上回 :http://blog.csdn.net/supingemail/article/details/48010141
现在来讲讲具体该如何去实现 :tomcat + memcached + session 共享实现
下载memcached
memcached官方网址:http://memcached.org 提供了linux版本
memcached for win32版下载地址:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip
memcached for win64版下载地址:http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available
源码地址:https://code.google.com/p/memcached/
在windows下安装memcached
(1)、下载好后里面只有一个memcached.exe,解压到c:/memcached/memcached.exe
(2)、将memcached安装成windows服务:
打开命令行窗口,进到c:/memcached,执行:memcached.exe -d install
(3)、启动memcached : memcached.exe -d start
(4)、检测 memcached :cmd --> telnet 127.0.0.1 11211
准备好两个干净的tomcat
(1)、修改相应的端口号:
一个tomcat保持不变,另外一个tomcat将conf/server.xml中的端口号修改如下:
<Server port=”8005″ shutdown=”SHUTDOWN”> 将8005端口号改成其他的端口号,不能与另外一个tomcat的相同
<Connector connectionTimeout=”20000″ port=”8080″ protocol=”HTTP/1.1″ redirectPort=”8443″/> 将8080端口号改成其他的端口号
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″/>将8009端口号改成其他的端口号
(2)、在两个tomcat,conf/context.xml配置文件中添加如下信息:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211 n1:localhost:11311"
lockingMode="auto" //可以去掉
sticky="false" //可以去掉
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false" //可以去掉
sessionBackupTimeout= "100"
copyCollectionsForSerialization="true" //可以去掉
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
测试
编写一个简单的Servlet项目来测试,看看是否实现了session共享.
资源:http://download.csdn.net/detail/supingemail/9057325
中的资料中有全套的配置以及测试,可以供学习之用 ...
在tomcat1 8080 端口中访问 http://localhost:8080/Demo1 会自动进入到登录中去,然后将登录名和密码保存在了session中;
在tomcat2 8090 端口中访问 http://localhost:8090/Demo1/seccess1.jsp ,没有经过登录,但是会打印出在8080端口登录时候的用户名和密码。
由此可见,session在8080 和 8090 端口的服务上实现了共享。
这种共享只能适合特殊的应用,有些应用估计很难。要保证memcached正确安装并运行,而且还要是同一个项目,扯的很了。
改进
利用memcached 的client的去实现不同服务,不同程序之间的信息共享。
实现方式就是下载
commons-pool-1.6.jar
java_memcached-release_2.6.6.jar
log4j-1.2.17.jar
slf4j-api-1.7.2.jar
slf4j-log4j12-1.7.2.jar
这五个jar ,放到要共享数据的两个不相关的项目中去,然后在项目A中的memcached 的client 用来存数据,项目B中的memcached 的client 用来取数据,
以上的配置不变,tomcat的设置也不变,可以通过验证得到结果证实没有问题.