Tomcat实现session保持的三种方式、使用msm方式搭建jsp网站

news/2024/5/21 1:16:16/文章来源:https://blog.csdn.net/comphoner/article/details/77893392

Tomcat简单的来说类似于php的功能,主要实现java程序的编译,最后呈现给用户的是html格式的代码,使用用户可以在浏览器中访问。Tomcat是Java语言研发的,所以依赖于java的虚拟机(jvm)。

一、使用前端调度器实现实现session保持

实现的原理如下图,会话保持使用前端的调度器实现。例如:使用Ngnix调度时,使用ip_hash算法就可以实现。

1

配置步骤:

1、安装配置 Tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
操作系统: CentOS 6,5
目标主机:172.16.10.122  172.10.10.133
第一步:安装Java虚拟机 
### 获得jdk软件 jdk-6u31-linux-x64-rpm.bin 这里说明:对应的jdk版本有bin版本和rpm版本,
可以根据自己的需要下载。下载地址是:
### 安装步骤
chmod +x jdk-6u31-linux-x64-rpm.bin
./jdk-6u31-linux-x64-rpm.bin
## cat /etc/profile.d/java.sh 
export JAVA_HOME=/usr/java/latest
export PATH=/usr/java/latest/bin/:$PATH
### 
source /etc/profile.d/java.sh 
第二步:安装tomcat
### 获得tomcat软件 apache-tomcat-7.0.55.tar.gz 
### 安装步骤
tar xf ache-tomcat-7.0.55.tar.gz -C /usr/local
ln -sv apache-tomcat-7.0.55 tomcat
### cat /etc/profile.d/tomcat.sh 
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
###
第三步:添加测试站点,站点的目录数如下:
### tree /usr/local/tomcat/webapps/test/
/usr/local/tomcat/webapps/test/
|-- WEB-INF
|   |-- classes
|   `-- lib
`-- index.jsp
3 directories, 1 file
# 3个目录WEB-INF classes lib 1个文件 
# 文件内容:172.16.10.122
<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.example.com</h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("example.com","example.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
# 文件内容:172.16.10.133
<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.example.com</h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("example.com","example.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
第四步:启动tomcat
catalina.sh start

结果示例:

2

3

4

以上测试成功后,配置以下的内容。

2、配置前端调度器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
操作系统: CentOS 6,5
目标主机:172.16.10.1
第一步:安装Ngnix
### 可以使用源码编译安装,也可使用rpm方式安装(需配置好epel源)这里使用 rpm方式安装。
yum install ngnix -y
第二步:配置Ngnix前端调度
### cat /etc/nginx/conf.d/default.conf 主要配置如下:
upstream www.tomcat.org {
    ip_hash;
    server 172.16.10.122:8080;
    server 172.16.10.133:8080;
}
server {
    listen       80;
    server_name  www.tomcat.org;
    location / {
        proxy_pass http://www.tomcat.org;
        index  index.jsp index.html index.htm;
    }
}

结果测试:

5

这是通过ip_hash调度方法实现的。思考如下问题:这样做还能减轻后端tomcat的压力吗??

解决办法:将session信息在每个Tomcat节点上保存一份,做成tomcat集群(session集群)。

二、使用tomcat集群保持session

实现架构不变。

1、配置tomcat集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
### 在 /usr/local/tomcat/conf/server.xml 的<Host> </Host>内部以下内容添加:
目标主机:172.16.10.122 172.16.10.133
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
         channelSendOptions="8">
  <Manager className="org.apache.catalina.ha.session.DeltaManager"
           expireSessionsOnShutdown="false"
           notifyListenersOnReplication="true"/>
  <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
                address="228.10.10.14"
                port="45564"
                frequency="500"
                dropTime="3000"/>
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
              address="172.16.10.122/172.16.10.133"  
               # 注意此选项默认是auto,这里需要配置。每个节点配置自己的ip地址,
               # 意思是接收session心跳消息的地址
              port="4000"
              autoBind="100"
              selectorTimeout="5000"
              maxThreads="6"/>
    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
      <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
  </Channel>
  <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
         filter=""/>
  <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
  <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
            tempDir="/tmp/war-temp/"
            deployDir="/tmp/war-deploy/"
            watchDir="/tmp/war-listen/"
            watchEnabled="false"/>
  <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
  <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
### 在相应应用程序的web.xml中添加<distributable\>; 也可以全局添加
目标主机:172.16.10.122 172.16.10.133
cp /usr/local/tomcat/webapps/test/WEB-INF/web.xml /usr/local/tomcat/webapps/test/WEB-INF/
# 编辑 /usr/local/tomcat/webapps/test/WEB-INF/web.xml 在 <web-app> 中添加:
<distributable/>;

2、配置前端调度器

这里主要是使用轮询调度,不使用ip_hash调度。只需将配置文件中的ip_hash去掉即可。

结果示例:

配置完成后,重启tomcat即可。

8

从结果中可以知道,实现了session保持。

6

7

思考如下问题? 这种方式的session保持是通过每个节点保存一份session信息,但是:但集群节点很多时,这些seesion信息可能是很大级别的。此时,各个节点之间的session复制反而成了影响系统性能的瓶颈。

解决办法: 使用session服务器,将seession信息统一保存到缓存服务器中。

二、使用session服务器(memcached)来保持session

试验拓扑图如下:

9

tomcat实现此功能要借助于msm(Memcached-Session-Management)模块可以实现。需要下载jar包, javolution、memcached-session-manager-tc7、spymemcached、memcached-session-manager、msm-javolution-serializer 。将这些jar包拷贝到/usr/local/tomcat/lib/目录下,支持msm功能。这些包可以再Google Code中找到。

下载时要注意:要与tomcat的版本相对应。

1、配置memcached

1
2
3
4
5
操作系统:CentOS 6.5
目标主机:172.16.10.1 172.16.10.9
yum install memcached -y
service memcached start

2、配置tomcat

1
2
3
4
5
6
7
8
9
10
11
12
目标主机:172.16.10.122 172.16.10.133
## 在试验一的基础上,继续配置
### 在 /usr/local/tomcat/conf/server.xml 的<Host> </Host>内部以下内容添加:
<Context path="/test" docBase="/usr/local/tomcat/webapps/test/" reloadable="true">
         <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                  memcachedNodes="n1:172.16.10.9:11211,n2:172.16.10.1:11211"
                  failoverNodes="n1"
                  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
              transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
         />        
</Context>

3、配置Ngnix前端调度方法,同试验二一样。

结果示例:

10

11 

补充说明:

对于前端调度器也可使用apache和haproxy反向代理器。

四、Tomcat实例

tomcat + memcacahed + nginx + mysql + nfs 实现jsp格式的论坛。试验拓扑图如下:

13

1、配置数据节点 172.16.10.1

1
2
3
4
5
6
7
8
9
10
11
12
#### 配置 NFS 服务器
mkdir /tomcatdata
# 编辑 /etc/exports,添加:
/tomcatdata 172.16.0.0/16(rw)
service nfs start
### 配置 mysql
yum install mysql-server -y 
servive mysqld start
mysql> CREATE DATABASE jcenter1;
mysql> GRANT ALL ON jcenter1.* TO jcenter@'172.16.%.%' IDENTIFIED BY 'jcenter';
mysql> FLUSH PRIVILEGES;

2、配置tomcat

在试验一的基础上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
目标主机: 172.16.10.122 172.16.10.133
第一步:搭建站点
mkdir /tomcat/webapps/
mount -t nfs 172.16.10.1:/tomcatdata /tomcat/webapps/
# 获取jsp程序 JavaCenter_Home_2.0_GBK.tar.bz2 java程序代码
tar -xf JavaCenter_Home_2.0_GBK.tar.bz2 -C /tomcat/webapps/
cd /tomcat/webapps/
ln -sv JavaCenter_Home_2.0_GBK jct
# 配置 JavaCenter:/tomcatdata/jct/config.properties
# 主要修改以下:
# 数据库服务器地址(一般为本地localhost或127.0.0.1)
dbHost = 172.16.10.1
# 数据库服务器端口号(一般为3306)
dbPort = 3306
# 数据库用户名
dbUser = jcenter
# 数据库密码
dbPw = jcenter
# 数据库名
dbName = jcenter1
第二步:配置tomcat
<Host name="www.tomcat.org"  appBase="/tomcat/webapps"
      unpackWARs="true" autoDeploy="true">
   <Context path="/jct" docBase="jct" />
       <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                memcachedNodes="n1:172.16.10.9:11211,n2:172.16.10.1:11211"
                failoverNodes="n2"
                requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
       />            
    </Context>
</Host>
# 当然msm所依赖的jar包要拷贝到对应的目录下
重新启动tomcat.

结果示例:

14

15

16

18

至此,配置基本完成。

本文出自 “逆水寒” 博客,请务必保留此出处http://guoting.blog.51cto.com/8886857/1568583

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_739165.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot婚纱影楼摄影预约网站

管理员账号/密码&#xff1a;admin/admin 用户账号/密码&#xff1a; matou/123456 ps:管理员登录地址在页面最下面&#xff0c;这个程序是一个很好的模板源码&#xff0c;在不修改一行代码的情况下可以轻松的修改为类似健身俱乐部的网站。 效果截图&#xff1a; 数据库…

基于SpringBoot旅游信息管理系统网站

精美的旅游信息管理系统网站 可以在线预订酒店和景点 部分功能登录后才可以使用 设置的端口号是80端口 启动后访问的网址&#xff1a;http://localhost/travel/ 有会员中心和管理员后台 会员可以注册 管理员账号&#xff1a;admin 密码&#xff1a;admin 修改数据库连接…

基于springboot的购物商城网站

项目描述 Springbootmysql商城系统&#xff08;带后台管理系统&#xff09; 运行环境 jdk8mysqlIntelliJ IDEAmaven 项目技术 springbootmysqlmybatis 效果截图&#xff1a; 账号admin 密码123456 首页地址&#xff1a;http://localhost:8080/Home?actionindex 前台页面…

基于jsp+java+mysql的的家具销售网站

本文讲述了基于B/S模式的java技术的家具在线销售系统的设计与实现。所谓的家具在线销售系统是通过网站推广互联企业的家具和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订单处理功能。 从长期的战略目标来说&#xff0c;家具在…

基于jsp+mysql+Spring+SpringMVC+mybatis的ssm美食菜谱网站系统

本美食菜谱网网站主要包括登录模块、菜谱动态管理模块、菜品地区管理模块、美食信息管理模块、和退出模块等多个模块,采用目前最流行的ssm框架和eclipse编辑器、mysql数据库设计并实现的 。本系统基于SSM(SpringSpringMVCMyBatis)框架,适用于毕业设计&#xff0c;采用javaweb,基…

基于Spring+SpringMVC+MyBatis的服装专卖店网站的设计与实现

基于SpringMVCMyBatis的服装专卖店网站的设计与实现 &#xff08;一&#xff09;基本信息 本项目是二级项目&#xff0c;利用目前较流行的第三方框架&#xff08;BootStrapSpringMVC MyBatis&#xff09;进行开发&#xff0c;数据库服务器使用MySQL&#xff0c;Web服务器使用To…

基于SSM框架的旅游网站

介绍&#xff1a;springspringmvcmybatis三大框架&#xff0c;mysql数据库 功能结构图&#xff1a; 效果截图&#xff1a; 数据库表&#xff1a; CREATE TABLE t_admin ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(100) DEFAULT NULL, password varcha…

基于java的小说网站系统

技术&#xff1a;jsp servlet mysql、 介绍&#xff1a; 打开MyEclipse导入项目&#xff1a; file——import——General——Existing——project——into——Workspace 部署项目到tomcat服务器 启动tomcat服务器&#xff0c;打开浏览器&#xff0c;访问项目 ie打开网址 http:…

基于jsp+java的旅游网站

介绍&#xff1a; jsp&#xff0c;servlet&#xff0c;mysql&#xff0c;Navicat&#xff0c;eclipse 效果截图&#xff1a; 数据库表&#xff1a; CREATE TABLE tab_category ( cid int(11) NOT NULL AUTO_INCREMENT, cname varchar(100) NOT NULL, PRIMARY KEY (cid),…

基于ssm健身俱乐部网站

介绍&#xff1a; eclipse&#xff0c;mysql&#xff0c;spring&#xff0c;springmvc&#xff0c;mybatis 本健身俱乐部网站系统主要包括系统用户管理、新闻数据管理、用户管理、教练管理、器材管理、教室管理、课程安排管理、选课管理、课程管理、会员卡管理、办卡管理等多个…

基于java的动漫网站设计与实现

介绍&#xff1a; jspservletmysqleclipse 本系统将实现以下基本功能&#xff1a; &#xff08;1&#xff09;系统具有简洁大方的页面&#xff0c;使用简便&#xff0c;友好的错误操作提示。 &#xff08;2&#xff09;管理员用户具有图片漫画管理、注册用户管理、评论留言管理…

java短视频播放网站ssm框架

短视频点播系统&#xff0c;必有一个正确的设计思想&#xff0c;通过合理选择数据结构、网络结构、操作系统以及开发环境&#xff0c;构成一个完善的网络体系结构&#xff0c;才能充分发挥计算机信息管理的优势。视频点播系统需要实现的功能包括用户的管理&#xff0c;以及视频…

基于javaweb的课程学习网站

介绍&#xff1a; B/S(Browser /Service )结构&#xff0c;中文译为浏览器和服务器结构。其主要的逻辑在服务器端&#xff08;Service&#xff09;完成&#xff0c;而在浏览器部分只处理非常少的事物逻辑处理。Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相…

基于php鲜花花卉销售网站

本系统是为传统经营的花店开通网上销售渠道而开发的&#xff0c;主要满足传统花店运营模式的需求&#xff0c;将销售渠道扩展到网上。通过简单的管理&#xff0c;提供该最终消费者产品的展示、购物、订单处理等。 在线购物操作简单&#xff0c;节约时间&#xff0c;大大的见擒了…

基于php假发销售商城网站

假发销售网站使用php,mysql实现了如用户注册、用户登录、假发商品的预览查询、对假发商品的购买通过购物车实现、可进入留言本留言等等&#xff0c;从而实现了网站与客户之间的交流和沟通。 功能&#xff1a;客户功能和管理员功能两个部分。 设计题目&#xff1a;假发销售网站…

基于php的美食网站

美食本是享受。随着人们生活水平的不断提高。人们越来越重视饮食。寻求味觉的刺激。 因此&#xff0c;本网站就是专为广大吃货提供美食资讯。可以利用它很方便的查到各种美食的介绍信息&#xff0c;实现预定&#xff0c;并且可以提供吃货经验交流。 美食推荐这一话题&#xff0…

基于php的婚庆公司服务网站

整个系统采用了B/S设计结构&#xff0c;利用网络的便捷性和这种模式系统的升级&#xff0c;维护快的特点&#xff0c;实现系统模块的各个功能。本系统是在WINDOWS XP系统环境下开发的&#xff0c;系统主要采用php&#xff0c;mysql数据库进行设计&#xff0c;同时相应的使用Dre…

基于php旅游网站的设计与实现

基于php实现的旅游网站的基本功能&#xff0c;要求编码规范&#xff0c;不断发现问题&#xff0c;努力完善网站建设。 根据对旅游网站的功能需求、业务操作规程及其数据结构等具体分析&#xff0c;需要解决问题如下&#xff1a; 1.旅游景点发布和查询功能&#xff1a; 进入网站…

基于PHP儿童早教产品网站设计

随着信息技术和网络技术的发展&#xff0c;网络给我们的生活的各个层面带来了革命性的影响。快节奏的城市生活和繁忙的工作&#xff0c;使人们很少有时间和精力逛商场&#xff0c;所以建立一个电子商务网站成为一种迫切的需求。电子商务网站的建立&#xff0c;不仅可以提高工作…

基于PHP化妆品销售网上商城网站

基于PHP的化妆品商城前台开发工具选择的Dreamware&#xff0c;后台数据库采用MYSQL&#xff0c;并综合使用了HTML、JS脚本技术等多种关键技术。 网上商城包括用户注册、用户登录、商品列表、商品详情、购物车、后台管理以及注销等模块。为企业提高了工作效率&#xff0c;节省了…