目前来说session共享的解决方案很多,可以让tomcat自己进行一个同步操作,但是这样视乎不太和谐,我感觉最好的办法还是用一台内存数据库来存储session,作为session共享。下面是步骤
第一步 安装redis
#解压redis
tar -zxvf redis-2.8.11.tar.gz
cd redis-2.8.11
make
make test
#发现错误You need tcl 8.5 or newer in order to run the Redis test
#安装tcl
tar -zxvf tcl8.6.1-src.tar.gz
cd tcl8.6.1
cd unix
./configure
make
make install
#然后继续安装redis
#在目录里面执行 make test如果成功之后继续执行
make install
#然后进入到目录里面,执行
redis-server redis.conf
#这个时候你会看到一个类似蛋糕的界面,这样就说明你安装成功了,然后ctrl +c 关掉redis 这个时候的redis是在前台执行的,我们需要把他改到后台线程里面去,之后对redis.conf文件进行修改
vi redis.conf
#修改daemonize yes---目的使进程在后台运行,然后执行启动命令
redis-server redis.conf
#如果你看到如下类容的话说明你成功了。
[root@root redis-2.8.11]# ps -ef|grep redis
root 21113 1 1 12:46 pts/1 00:00:08 /home/soft/java7/jdk1.7.0_51/bin/java -Djava.util.logging.config.file=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/endorsed -classpath /home/webServer/redis/tomcat1/apache-tomcat-7.0.47/bin/bootstrap.jar:/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/bin/tomcat-juli.jar -Dcatalina.base=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47 -Dcatalina.home=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47 -Djava.io.tmpdir=/home/webServer/redis/tomcat1/apache-tomcat-7.0.47/temp org.apache.catalina.startup.Bootstrap start
root 21195 1 0 12:53 ? 00:00:00 redis-server *:6379
root 21200 21039 0 12:54 pts/3 00:00:00 grep redis
[root@root redis-2.8.11]#
r注意端口是6379 ,这个端口可以在配置文件里面进行修改的,具体自己去改吧,这个时候需要下载tomcat跟redis的jar包,因为tomcat需要通过接口去掉用redis
第二步复制所需jar包
jedis-2.1.0.jar
commons-pool-1.6.jar
tomcat-redis-session-manager-1.2-tomcat-7.jar
最好使用上面给出的版本的jar包 因为版本过高可能会不支持,把这几个包复制到tomcat lib下
第三步 配置两个tomcat
然后开始配置tomcat
打开context.xml文件然后把这段代码复制上
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60"/>
两个tomcat里面都必须有这段代码,然后放入一个项目进行测试即可