前文我们聊了下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. jmeter组件中 测试计划,线程组,sampler等等

    [测试计划] 这边用户定义的变量,定义整个测试中使用的重复值(全局变量),一般定义服务器的ip,端口号 [线程组] 关于,线程组,我简单聊聊,有不对的地方欢迎大家拨乱反正 线程数:你需要运行的线程 比 ...

  2. 黎活明8天快速掌握android视频教程--23_网络通信之网络图片查看器

    1.首先新建立一个java web项目的工程.使用的是myeclipe开发软件 图片的下载路径是http://192.168.1.103:8080/lihuoming_23/3.png 当前手机和电脑 ...

  3. Netdiscover

    Netdiscover不仅支持主动arp检测,还支持被动的arp检测,即把网卡设置为混杂模式,收取所有局域网内的arp广播数据包,从而判断活着的ip. 主动发现命令格式:netdiscover  -i ...

  4. 新来的"大神"用策略模式把if else给"优化"了,技术总监说:能不能想好了再改?

    本文来自作者投稿,原作者:上帝爱吃苹果 目前在魔都,贝壳找房是我的雇主,平时关注一些 java 领域相关的技术,希望你们能在这篇文章中找到些有用的东西.个人水平有限,如果文章有错误还请指出,在留言区一 ...

  5. python的一些基础知识

    一.函数介绍 二.模块与包 三.面向对象介绍 四.网络编程基础应用了解 五.基于MySQL对数据库的理解及基础操作 六.粗浅学习的前端知识整理

  6. Mariadb之事务隔离级别

    上一篇我们聊到了mariadb的锁,以及怎么手动加锁和解锁等等,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13196905.html:今天我们来聊一聊mar ...

  7. 再探JVM内存模型

    以前学JVM的时候看过<深入理解JVM>,当时看的很模糊也记了些笔记,更像是为了应付面试.事实是确实把笔记都背上了,春招找实习的时候,内存管理.类加载.垃圾回收三连背一遍.后来自己做项目的 ...

  8. C++版的网络数据包解析策略(升级版)

    初版:http://www.cnblogs.com/wjshan0808/p/6580638.html 说明:在实现了对应的接口后该策略可以适合绝大多数的网络数据包结构 首先,是三个接口 IProdu ...

  9. elasticsearch7.6 安装 并且开启外网访问,真的好累。

    下载 下载页面 https://www.elastic.co/cn/downloads/elasticsearch wget https://artifacts.elastic.co/download ...

  10. 10 个独特的 CSS 背景视觉效果

    这几年的web设计中,大背景的设计变得越来越流行.特别是在现在大屏大行其道的情况下,设计师在设计中越来越多的使用大分辨率的背景图来填充屏幕,这样更能制造独特的视觉效果,能更好的传达他们想要向用户传达的 ...