Tomcat 使用memcached 实现session共享

系统环境:

Centos6.5 x86_64

同台服务器上使用两个tomcat实例

安装jdk1.7

安装tomcat8.0.27

安装memcached

1
yum 
install 
yum 
install 
java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64 memcached -y

下载并安装tomcat8

1
2
3
4
5
wget http:
//mirrors
.hust.edu.cn
/apache/tomcat/tomcat-8/v8
.0.27
/bin/apache-tomcat-8
.0.27.
tar
.gz
安装:
tar 
zxvf apache-tomcat-8.0.27.
tar
.gz
cp 
-r apache-tomcat-8.0.27 
/usr/local/tomcat1
cp 
-r apache-tomcat-8.0.27 
/usr/local/tomcat2

使用nginx做为代理

下载并安装:

1
2
3
4
5
6
7
wget http:
//tengine
.taobao.org
/download/tengine-2
.1.1.
tar
.gz
 
tar 
zxvf tengine-2.1.1.
tar
.gz
cd 
tengine-2.1.1
.
/configure
make
make 
install

安装默认目录为:/usr/local/nginx

配置Nginx 这里就不多介绍了,之前文件也有详细介绍,请查阅^_^

下面来配置下tomcat连接memcached,存放session id

需要下载的文件,都是写这篇博文时的最新版本,下载的文件与tomcat的版本要对应。我这里使用的tomcat8所以下载的是tc8的版本

memcached-session-manager-1.8.3.jar    

memcached-session-manager-tc8-1.8.3.jar

msm-javolution-serializer-1.8.3.jar 

以上三个文件下载地址:http://repo1.maven.org/maven2/de/javakaffee/msm/

javolution-5.5.1.jar 

下载地址:http://central.maven.org/maven2/javolution/javolution/5.5.1/javolution-5.5.1.jar

spymemcached-2.10.3.jar

下载地址:https://spymemcached.googlecode.com/files/spymemcached-2.10.3.jar  

下载完成后反这些jar包放在 /usr/local/tomcat1/lib目录下,就是你的tomcat 目录下的lib目录

修改配置文件server.xml 

大约在如下位置:

<Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

    xmlValidation="false" xmlNamespaceAware="false" >

<!-- 添加下面标红这些 --!>

     <Context reloadable="false" path=""> 这里也可以设置为别名地址类似如下:<Context reloadable="true" path="/虚拟地址" docBase="真实路径"> 

     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

   memcachedNodes="n1:memcache地址:11211"

   sticky="false"

   sessionBackupAsync="false"

   lockingMode="auto"

   requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

   transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"

     />

     </Context>

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log" suffix=".txt"

               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

</Engine>

在另一个tomcat上也是如此的配置即可

下面是一个测试文件test.jsp放在tomcat的网页路径下,

内容如下:

SessionID:<%=session.getId()%>  

<BR>  

SessionIP:<%=request.getServerName()%>  

<BR>  

SessionPort:<%=request.getServerPort()%>  

<%  

out.println("This is Tomcat Server 111111!");   #这里区别两个tomcat的内容需要做下相应的修改

%>

经过测试Tomcat的session id已经共享了,暂时就不上图片了,,,,,。。。