一、常见JavaWeb服务器
十载的木兰网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整木兰建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“木兰网站设计”,“木兰网站推广”以来,每个客户项目都认真落实执行。1、WebLogic:是BEA公司的产品、WebSphereAS:是IBM公司的产品、JBossAS:红帽公司的产品,可以自行了解
2、Tomcat服务器:Sun公司在推出的小型Servlet/JSP调试工具的基础上发展起来的一个优秀的Servlet容器,Tomcat本身完全用java语言编写,所以tomcat的运行需要java的支持,所以要先安装JDK,才能运行。
目前是Apache开源软件组织的一个软件项目,它的官网 :成都服务器托管
http://tomcat.apache.org
Tomcat得到了广大开源代码志愿者的大力支持,且可以和目前大部分的主流Web服务器(IIS、Apache服务器)一起工作,它运行稳定、可靠且高效。已成为目前开发企业JavaWeb应用的最佳Servlet容器选择之一。
二、Tomcat的目录结构及常用配置
1、Tomcat的目录层次结构
2、JavaWeb应用的组成结构
3、JavaWeb应用的发布
开放式目录方式:成都服务器托管
打包war方式: 使用 Jar -cvf *.war .
4、Tomcat的组成结构
Tomcat本身由一系列可配置的组件构成,其中核心组件是Servlet容器组件,它是所有其他Tomcat组件的顶层容器。
每个组件都可以在Tomcat安装目录/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。下面用XML的形式展示各种Tomcat组件之间的关系
5、Tomcat体系结构
6、虚拟目录的映射方式
从Tomcat6开始,Tomcat支持自动映射,即tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录,换句话说,只需把web应用放在webapps目录下,不需要配置Context,外界可以直接访问。
但是如果你不想讲项目放在webapps下,而是放在其他地方,还是需要配置Context,比如我的tomcat在C盘,我的项目在D盘,则需要在Host下增加如下虚拟目录映射语句。
7、Context元素配置
tomcat在加载一个web应用时,会一次按照以下五种方式查找web应用中的元素,优先级一次降低,直到找到为止
8、将项目部署为Tomcat默认应用
即访问 http://localhost:8080 时出来的是tomcat自带的欢迎页面,改为登录到自己的项目主页。
方法一:成都服务器托管
在Tomcat默认安装后,tomcat的主目录是webapps/root目录,所以如果想改变tomcat的主目录的话可以如下所做:成都服务器托管
在/conf/server.xml文件的之间加入代码
方法二:成都服务器托管
将tomcat安装目录下的ROOT下的所有文件删除,换成自己项目的文件,此法有点暴力。
方法三:成都服务器托管
Tomcat5.0以下版本在C:/Tomcat/conf/Catalina/localhost目录下会自动生成了一个ROOT.Xml,但是5.0以上版本不再生成此文件。
所以可以新建个ROOT.xml,在里面加入如下代码:成都服务器托管
9、Context元素的属性
path:指定访问该Web应用的URL入口
docBase:指定Web应用的文件路径,可以写绝对路径,也可以写相对于appBase属性的相对路径
className:指定实现Context组件的Java类的名字,这个类必须实现org.apache.catalina.Contex接口,该属性默认值为org.apache.catalina.core.StandardContext(不建议大家改动)
reloadable:如果为true,Tomcat服务器在运行状态下回监视在WEB-INF/classes和WEB-INF/lib目录下的class文件的改动,以及监视Web应用的WEB-INF/web.xml文件的改动,如果检测到有更新,服务器会自动更新加载web应用。
其默认值为false。在开发和调试阶段,将其改为true,一般像Eclipse等开发环境都会默认改为true。在正式发布阶段,应将其该为false,可以降低Tomcat的运行负荷,提高Tomcat的运行性能
在一般情况下,元素都会使用默认的标准Context组件,即className属性采用默认值org.apache.catalina.core.StandardContext,它除了拥有上面介绍到的属性外,还有自身专有的属性:成都服务器托管
10、web.xml文件
该文件必须放在/WEB-INF目录下,但是从7.0版本开始,Tomcat可以不使用web.xml文件,而是使用注解方式。
三、Tomcat的优化
1、内存使用配置
Tomcat是依赖于JVM的,所以Tomcat的使用内存配置实质上是JVM的内存配置。
在/bin目录下的catalina.bat可以直接通过Tomcat设置JVM内存参数,windows下打开catalina.bat文件,在大概中间的位置,找到
通过内存设置充分利用服务器内存
java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError:PermGen space,可以不设置
可通过jmap -heap process_id查看设置是否成功
2、大连接数配置(并发能力)
在/conf/server.xml里进行配置
在属性中将protocol属性改为
NIO模型的效率更高
加入
四、负载均衡配置
负载均衡是提高应用负载量和容错的有效手段,可以结合Nginxs与Tomcat实现,Nginx是一款性能优异的反向代理服务器。
1、负载均衡配置实现
反向代理原理示意图:成都服务器托管
负载均衡示意图:成都服务器托管
负载均衡策略:成都服务器托管
Nginx 提供轮询(round robin)、用户IP哈希(client IP)和指定权重 3 种方式
2、负载均衡时Session的处理策略
Session是Tomcat服务器上的内存空间,如果一个用户发出多个请求,却发到了多个tomcat服务器中,那么就会出现Session不同步的问题
解决方案1
将一个用户的请求锁定到某一台服务器上,简单,但是缺乏容错性,一旦某个服务器发生故障,Session可能丢失,(但是服务器发生故障是一个低概率事件,如果一个服务器经常挂掉,要么是硬件有问题,要么是应用有问题)
可以使用用户IP哈希实现
解决方案2
Session复制策略,基于网络的广播策略,一个节点Session变化,其他节点同步复制,具有容错性,但节点多或复制量大时对网络负荷大,使网络效率低下,甚至阻塞
① 在/conf/server.xml文件中开启Session复制的选项,将注释去掉,7.0默认值以配置好,需要接收器绑定内网(一般服务器都有两块网卡)网卡地址,修改端口>。
② 在应用中指定应用是在分布式部署之下,在web.xml中添加选项
解决方案3
额外创建一个共享的空间用来存放Session,所有服务器共享一个Session
memcached缓存共享方案基本原理
粘性Session与非粘性Session方式:成都服务器托管
需要一些工具jar包,官网有目录和下载连接,在/conf/context.xml中进行配置,全局有效。
3、集群环境中应用代码应注意的问题
传递Session需要实体类序列化支持,实现可序列化接口,设置版本号。
获取用户IP地址方法的变化,获取真实客户端ip而不是Nginx代理地址。
动静分离结构的预规划。一般高并发的网站上,资源类的文件,如js,css,图片通常是由静态服务器处理,Nginx处理静态文件效率就非常高,而tomcat处理静态文件是它很大的一个弱势,tomcat只负责动态请求的处理。
那么编码的时候就要考虑静态资源最后可能要被拿出去,地址会有变化,所以在开发的时候应该规划访问地址,保持大灵活性。