前文我们聊了下tomcat的配置文件相关格式和组件简介以及webapp目录结构,manger部署和host managera部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13307892.html;今天我们来详细聊一聊server.xml中的各组件配置和属性;

  server:在tomcat中,一个server就代表一个tomcat实例;所谓tomcat实例就是在服务器上表现为一个Java进程,默认监听在8005端口,该套接字默认只接收"SHUTDOWN"来关闭tomcat实例;因此,在同一物理主机上启动多个tomcat实例时,需要修改其监听端口为不同其他tomcat实例所监听的端口;

  示例:修改server默认用于关闭tomcat实例的命令

  默认配置

  使用默认配置关闭tomcat实例

  提示:可以看到当我们使用telent去连接8005端口,然后给它发送一个SHUTDOWN命令就可以实现关闭tomcat实例;

  更改关闭tomcat实例

  提示:以上配置表示使用SHUTDOWN-TOMCAT命令来关闭tomcat实例

  测试:重启tomcat服务,然后用原来的SHUTDOWN命令看看是否可以关闭tomcat实例呢?

  提示:可以看到现在我们使用shutdown命令就不能把tomcat实例关闭掉了;

  测试:用SHUTDOWN-TOMCAT命令是否可关闭tomcat实例呢?

  提示:我们使用SHUTDOWN-TOMCAT命令就可以实现关闭tomcat实例;这里建议把这个关闭实例的命令修改成其他不容器被猜到的命令,这样相对要安全点;

  Service:用于实现将一个或多个connector组件关联至一个engine组件;

  提示:以上配置上默认配置,默认service名称叫catalina ,它关联了一个connector 端口为8080 ,协议是http/1.1,连接超时时长为20秒,如果启用了https,访问对应资源如果必须是https,它默认会跳转至8443端口;其实service的属性就 一个name,这个没有什么好说的,默认情况我们都不会去更改service的名称,用默认的catalina就行;

  Connector连接器组件:主要作用负责接收请求,常见的连接器有三种,分别是http连接器,https连接器,和ajp连接器;进入tomcat的请求可分为两类,一类是来自客户端浏览器的访问,一类是来自其他web server反代访问;如果想配置tomcat只能通过代理来访问,并且不能绕过代理来访问,我们可以选择把http和https连接器给禁用了,只留一个ajp连接器,这样一来tomcat就只能通过httpd的ajp反代来访问,因为浏览器不支持ajp协议;

  Connector组件的属性有:port用于指定连接器监听的端口,如果只指定监听端口没有指定ip地址,表示监听本机所有可用地址的对应端口;protocol用于指定用于连接该连接器所用到的协议;connectionTimeout用于指定连接该连接器的超时时长;address用于指定监听的ip地址,不指定默认是本机所有可用地址;maxThreads用于指定该连接器的最大连接数,不指定默认为200;enableLookups用于指定是否启用DNS查询功能,如果开启了此功能,每次访问它都会把对应IP地址反接成主机名,其实这个是很消耗访问时间的,所以通常情况下都是把这个属性关闭的;acceptCount用于指定等待连接队列的长度,如果链接队列已经满载了,这个属性就是来指定后面排队的长度;redirectPort用于指定重定向端口,假如我们访问一个资源,而该资源又限定必须通过https协议访问,此时我们用http连接器访问该资源,它会跳转至对应端口的连接器上;sslProtocol用于指定ssl协议;URIEnconding用于指定uri的字符集,这个在有些uri是中文的场景中需要指定;

  实例:添加一个连接器,监听本机127.0.0.1:9090 使用协议为http1.1

  提示:以上配置标签名称区分大小写,里面的属性不区分大小;通常建议还是区分大小写去配置;tomcat的配置文件都遵循Java变量命名规范,都是驼峰式命名;

  测试:重启tomcat服务,看看127.0.0.1:9090是否处于监听状态?

  提示:可以看到127.0.0.1:9090已经处于监听状态;

  Engine组件:主要作用实例化一个Servlet实例,用于运行servlet代码,其内部可以一个或多个host组件来定义站点;如果有多个虚拟主机通常需要通过defaultHost属性来定义默认的虚拟主机;这里的虚拟主机和httpd里的虚拟主机概念没有本质不同;engine的常用属性有:name用于指定引擎的名称;通常engine的名称为catalina不会去改变,这是因为tomcat内建代码中相关引擎的名称为catalina;defaulthost用于指定默认虚拟主机;jvmroute用于指定tomcat集群jvm标识,意思是多个tomcat实例组成的集群,对应请求路由该发往那个引擎上,就是靠jvmroute来指定;这个有点类似ipvs中给报文打标记的意思;通常用于tomcat集群基于cookie的会话绑定或sessions stick中使用;

  Host组件:位于engine内部用于接收请求并进行相应处理的主机或虚拟主机;常用的属性有:name用于指定host的名称;appBase用于指定此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径;uppackwars用于指定是否将.war格式的包展开;autodeploy用于指定是否支持自动部署(在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat);

  示例:添加一个虚拟主机,名为www.test1.com ,对应网页目录根文件路径为/appdata/test 支持展开.war包,支持自动部署

  更改配置文件,新增一个host

  提示:注意appBase必须区分大小写,否则配置不会生效;

  新建host所指定的目录和目录结构

  提示:这里新建的虚拟主机就相当于访问对应虚拟主机名称,然后就返回一个页面;访问的URL中是除了虚拟主机名称就没有别的uri了;所以我们需要在指定目录下新建一个ROOT的目录;

  新建一个测试页

  重启服务,访问我们新建的虚拟主机,看看是否能够访问到我们提供的测试页面?

  用浏览器访问新建的虚拟主机,看看是否访问到我们提供的测试页面?

  提示:可以看到我们访问www.test1.com 是可以正常访问到我们提供的测试页面,这意味着我们配置的虚拟主机生效了;

  Context组件:该组件主要作用是用于定义url路径和网页文件路径的对应关系;有点类似nginx里的alias指令

  示例:把/helloapp/helloword 部署到www.test1.com虚拟主机上,并可以通过www.test1.com:8080/helloword访问到

  创建目录结构,并准备测试网页

  提供测试页面

  修改配置文件,新增context 把/helloapp/helloword 部署到www.test1.com上 并实现访问www.test1.com:8080/helloword

  提示:以上配置表示访问www.test1.com/helloword 对应页面文件存放在/helloapp/helloword/下;context组件中path用于指定uri的路径;docBase用于指定网页目录;

  重启tomcat,访问www.test1.com:8080/helloword看看是否访问到我们提供的测试页面?

  提示:我们提供的测试页面能够被访问到;

  Valve组件:该组件根据不同类的实例不同,其作用也不同;常用于定义日志,访问控制;

  示例:给www.test1.com定义一个访问日志

  提示:Valve组件中className 用于指定类,不同类对于Valve有着不同的意义,也决定了valve的作用;directory用于指定存放日志的目录,如果使用相对路径则相对CATALINA_BASE所指定的位置;prefix用于指定日志文件前缀名称;suffix用于指定日志文件后缀名称;中间部分通常是年月日时间用中横线连接的字串;pattern用于指定日志格式;有关日志格式的宏定义相关说明请查看官方文档https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/AccessLogValve.html;这里需要说明一下,&quot表示一个双引号,如果pattern中间有双引号,请使用&quot去表示;

  重启tomcat,访问www.test1.com 看看是否有日志生成

  提示:重启tomcat后,在对应目录就可以看到有我们刚才定义的日志文件;

  测试:访问www.test1.com 看看是否在记录日志到对应日志文件中?

  示例:定义只允许192.168.0.21访问www.test1.com

  提示:以上配置表示只允许192.168.0.21这台主机访问www.test1.com这台虚拟主机所提供的内容,其他主机都无法访问,包括本机;

  测试:重启tomcat,在ip为192.168.0.21上访问www.test1.com看看是否可访问?

  测试:在非192.168.0.232的主机上访问看看是否可访问?

  提示:可以看到在非192.168.0.21上访问提示为权限拒绝,是不能访问www.test1.com这台虚拟主机所提供的页面的;当然上面的配置使用allow来指定只允许的IP地址,这种是白名单机制;如果使用deny去指定,表示拒绝指定的IP访问,开放未指定的IP访问,这就是黑名单机制;

Java应用服务器之tomcat基础配置(二)的更多相关文章

  1. Java应用服务器之tomcat基础配置(一)

    前文我们聊到了java相关重要组件和它们之间的关系以及jdk.tomcat部署回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13302938.html:今天我们 ...

  2. Java应用服务器之tomcat session server msm搭建配置

    在上一篇博客中,我们介绍了tomcat自带的cluster组件配置session replication cluster,回顾请参考https://www.cnblogs.com/qiuhom-187 ...

  3. Java应用服务器之tomcat部署

    一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...

  4. Java应用服务器之tomcat会话复制集群配置

    会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来:常用的会话保持有绑定会话,就是前边我们聊的在代理上通过算法或 ...

  5. JAVA企业级应用服务器之TOMCAT实战

    JAVA企业级应用服务器之TOMCAT实战 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App ...

  6. Tomcat基础配置和高级配置

    **********  第一部分 Tomcat基础配置   *********** 一.Apatch Tomcat 在win下配置 大部分转载自:http://blog.csdn.net/liuhao ...

  7. #Java学习之路——基础阶段二(第十二篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. tomcat安全配置(二)

    1. JVM 1.1. 使用 Server JRE 替代JDK. 服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作. ...

  9. Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建

    目录: 0.前言 1.Tomcat的配置 2.第一个Web 项目 0.前言 刚刚开始接触web开发,了解的也不多,在这里记录一下我的第一个web项目启动的过程.网上教程很多,使用的java IDE 好 ...

随机推荐

  1. Scanner扫描器的使用

    Scanner:扫描器,可以通过Scanner类扫描用户在控制台录入的数据. 1.导包 //导包快捷键Alt+Enter 2.创建键盘录入对象 //键盘录入对象的名称为 “sc” 3.接收数据 //将 ...

  2. 使用SpringCloud Stream结合rabbitMQ实现消息消费失败重发机制

    前言:实际项目中经常遇到消息消费失败了,要进行消息的重发.比如支付消息消费失败后,要分不同时间段进行N次的消息重发提醒. 本文模拟场景 当金额少于100时,消息消费成功 当金额大于100,小于200时 ...

  3. CODING DevOps 系列第五课:微服务测试——微服务下展开体系化的微服务测试

    微服务测试的痛点与挑战 这张图可以形象地展示单体服务和微服务的对比,单体应用就像左边巨大的集装箱,软件模块和应用都包括其中:而微服务就像是由一个小集装箱组成,微小的服务组成一个庞大.完整的系统.单体服 ...

  4. SSL/TSL 原理( 握手原理和传输原理)

    本文参考<计算机网络 自顶向下方法> 目录 背景 通信的4要素 SSL/TLS in Detail 通讯保证 The Handshake Protocol 1. Initial Clien ...

  5. 第三章:软件也要拼脸蛋-UI 开发的点点滴滴

    常用控件 常用控件有:按钮 Button.文本显示框 TextView.图片显示框 ImageView.文本编辑框 EditText.进度条 ProgressBar.提示框 AlertDialog.进 ...

  6. Java WebService学习笔记 - Axis进阶(二)

    上一篇  Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...

  7. 【C++和C#的区别杂谈】后自增运算符的结算时机

    C++和C#的前自增++n和后自增n++,都是先自增后取值和先取值后自增的含义,但在复杂一点的赋值语句中,我发现细节上有很大的差异. 发现这个问题主要是一个无聊的晚上,我想搞清楚后自增是什么时候结算, ...

  8. vueX基础知识笔记

    接着昨天的知识点 mutations提交时,有时候达不到想要的响应式,我们必须要将数据提前放到state中,否则不会达到响应式的效果.比如 state.info['address'] = value ...

  9. Nginx 从入门到放弃(四)

    前面我们学习了nginx的基本操作和日志管理,今天我们学习一下生产环境经常会用到的路由定位location设置,在工作中,经常可能会出现怎么设置的路由访问不到网页呀?总是出现404错误啊,这些都很有可 ...

  10. 恕我直言你可能真的不会java第11篇-Stream API终端操作

    一.Java Stream管道数据处理操作 在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API.在使用的过程中分为三个阶段.在开始本文之前 ...