一、Tomcat 三种部署方式
Tomcat 三种部署方式:
1)在server.xml文件上配置<Context>
节点,设置相关的属性即可(静态部署)【上文中提过】
2)直接把Web项目放在webapps下,Tomcat会自动将其部署(自动部署)
3)通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。(自动部署)
自动部署原理:
通过配置Host元素的deployOnStartup和autoDeploy属性可以开启虚拟主机自动部署Web应用:当检测到新的Web应用或Web应用的更新时,会触发应用的部署(或重新部署)。
二者的主要区别在于:deployOnStartup为true时,Tomcat在启动时检查Web应用,且检测到的所有Web应用视作新应用;autoDeploy为true时,Tomcat在运行时定期检查新的Web应用或Web应用的更新。
自动部署依赖于检查是否有新的或更改过的Web应用,而Host元素的appBase和xmlBase设置了检查Web应用更新的目录:
- appBase属性指定Web应用所在的目录,默认值是webapps,这是一个相对路径,代表Tomcat根目录下webapps文件夹。
- xmlBase属性指定Web应用的XML配置文件所在的目录,默认值为conf/<engine_name>/<host_name>,例如上文例子中,主机localhost的xmlBase的默认值是$TOMCAT_HOME/conf/Catalina/localhost。
而Tomcat按照如下的顺序进行扫描,来检查应用更新:
1)扫描虚拟主机指定的xmlBase下的XML配置文件
2)扫描虚拟主机指定的appBase下的WAR文件
3)扫描虚拟主机指定的appBase下的应用目录
二、常用端口
Tomcat 常见端口:8005、8009、8080、8443作用
8005 ==> 8005端口是关闭tomcat进程所用
<Server shutdown="SHUTDOWN" port="8005">
8009 ==> HTTP等反向代理tomcat时就可以使用ajp协议反向代理到该端口
8080 ==>默认的HTTP监听端口
8843 ==> 默认的HTTPS监听端口。(默认未开启)
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>
七、tomcat 几种Connector 运行模式
1、bio ==> 传统的Java I/O操作,同步且阻塞IO。默认的模式,性能最差,没有经过任何优化处理和支持
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>
2、nio ==> JDK1.4开始支持,同步阻塞或同步非阻塞IO。 拥有比传统I/O操作更好的并发运行性能
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="org.apache.coyte.http11.Http11NioPortocol"/>
3、aio ==> aio(nio.2): JDK7开始支持,异步非阻塞IO;
4、apr ==>Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地 提高Tomcat对静态文件的处理性能. 从操作系统级别来解决异步IO的问题,大幅度的提高性能(需要安装apr native)
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="org.apache.coyte.http11.Http11AprPortocol"/>
查看 tomcat Connector 运行模式
1、根据tomcat启动日志信息判断
2、在http://x.x.x.x:8080/manager/status中查看服务器状态
三、tomcat容器如何创建servlet类实例
1、当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对 xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过 反射的方式实例化。(有时候也是在第一次请求时实例化)
2、在servlet注册时加上<load-on-startup>1</load-on-startup>如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。
四、Tomcat工作模式
Tomcat作为servlet容器,有三种工作模式:
1、独立的servlet容器,servlet容器是web服务器的一部分;
2、进程内的servlet容器,servlet容器是作为web服务器的插件和java容器的实现,web服务器插件在内部地址空间打开一个jvm使得java容器在内部得以运行。反应速度快但伸缩性不足;
3、进程外的servlet容器,servlet容器运行于web服务器之外的地址空间,并作为web服务器的插件和java容器实现的结合。反应时间不如进程内但伸缩性和稳定性比进程内优;
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
Tomcat作为独立服务器:请求来自于web浏览器;