wordpress电影网站主题,广州优俊网站制作公司,网络热词排行榜,厦门做网站优化的公司一.tomcat 介绍
1. tomcat 概述
自从JSP发布之后#xff0c;推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后#xff0c;开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器#xff0c;当然同时也支持 Servlet#xff0c;这样Tomcat就诞…一.tomcat 介绍
1. tomcat 概述
自从JSP发布之后推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器当然同时也支持 Servlet这样Tomcat就诞生了。Tomcat 是jakarta项目中的一个重要的子项目其被JavaWorld杂志的编辑选为2001年度最具创新的java产品同时它又是sun公司官方推荐的 servlet和jsp容器因此其越来越多的受到软件公司和开发人员的 喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次Tomcat是完全免费的软件任何人都可以从互联网上自由地下载。Tomcat与Apache的组合相当完美。
2.tomcat 历史 Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发名称为“JavaWebServer”。 1999年在 Davidson 的帮助下该项目于1999年于apache软件基金会旗下的JServ项目合并并发布第一个版本3.x即是现在的Tomcat该版本实现了Servlet2.2和JSP 1.1规范 。 2001年Tomcat 发布了4.0版本 作为里程碑式的版本Tomcat 完全重新设计了其架构并实现了Servlet 2.3和JSP 1.2规范。 目前 Tomcat 已经更新到 10.0.x版本但是目前企业中的Tomcat服务器主流版本还是7.x 和 8.x所以本课程是基于 8.5 版本进行讲解。 二.tomcat 实例安装
2.1. 环境准备
虚拟机的版本VMware-workstation-full-15.5.6-16341506.exe系统镜像版本CentOS-6.10-x86_64-bin-DVD1.iso全新安装桌面版可上网系统内存大小1GB系统硬盘大小20GB连接工具版本SecureCRTSecureFX_HH_x64_7.0.0.326.zip
2.2. tomcat下载
mv apache-tomcat-8.5.57 /usr/local/tomcat
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz
2.3. tomcat解压
tar -zxvf apache-tomcat-8.5.57.tar.gz
2.4. tomcat 安装
mv apache-tomcat-8.5.57 /usr/local/tomcat
2.5. tomcat 启动 注意Tomcat启动需要Java环境我这里是已经安装好的Java环境安装不再本章之中 启动 tomcat
/usr/local/tomcat/bin/startup.sh
关闭防火墙
service iptables stop
chkconfig iptables off
在浏览器输入http://192.168.239.144:8080/ 2.6. tomcat关闭
/usr/local/tomcat/bin/shutdown.sh 三.Tomcat 配置文件详解
3.1. server.xml 详解
server.xml 是tomcat 服务器的核心配置文件包含了Tomcat的 Servlet 容器Catalina的所有配置。
3.1.1. Server
Server是server.xml的根元素用于创建一个Server实例默认使用的实现类是org.apache.catalina.core.StandardServer。
Server port8005 shutdownSHUTDOWN
...
/Server
标签属性和子元素
portTomcat 监听的关闭服务器的端口。shutdown关闭服务器的指令字符串。Server内嵌的子元素为 Listener、GlobalNamingResources、Service。
3.1.2. Listener
默认配置的5个Listener的含义
!‐‐ 用于以日志形式输出服务器 、操作系统、JVM的版本信息 ‐‐
Listener classNameorg.apache.catalina.startup.VersionLoggerListener /!‐‐ 用于加载服务器启动 和 销毁 服务器停止 APR。 如果找不到APR库 则会输出日志 并不影响Tomcat启动 ‐‐
Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineon /!‐‐ 用于避免JRE内存泄漏问题 ‐‐
Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener /!‐‐ 用户加载服务器启动 和 销毁服务器停止 全局命名服务 ‐‐
Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener /!‐‐ 用于在Context停止时重建Executor 池中的线程 以避免ThreadLocal 相关的内存泄漏 ‐‐
Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener /3.1.3、GlobalNamingResources
GlobalNamingResources中定义了全局命名服务
GlobalNamingResources!‐‐ 可编辑的用户数据库UserDatabaseRealm也可以使用该数据库对用户进行身份验证 ‐‐Resource nameUserDatabase authContainer typeorg.apache.catalina.UserDatabase descriptionUser database that can be updated and saved factoryorg.apache.catalina.users.MemoryUserDatabaseFactory pathnameconf/tomcat‐users.xml /
/GlobalNamingResources3.1.4、Service
该元素用于创建 Service 实例默认使用 org.apache.catalina.core.StandardService。默认情况下Tomcat 仅指定了Service 的名称 值为 “Catalina”。Service 可以内嵌的元素为 Listener、Executor、Connector、Engine其中 Listener 用于为Service添加生命周期监听器 Executor 用于配置Service 共享线程池Connector 用于配置Service 包含的链接器 Engine 用于配置Service中链接器对应的Servlet 容器引擎。一个Server服务器可以包含多个Service服务。
Service nameCatalina
...
/Service
3.1.5、Executor
默认情况下Service 并未添加共享线程池配置。 如果我们想添加一个线程池 可以在 下添加如下配置
Executor nametomcatThreadPool namePrefixcatalina‐exec‐ maxThreads200 minSpareThreads100 maxIdleTime60000 maxQueueSizeInteger.MAX_VALUE prestartminSpareThreadsfalse threadPriority5classNameorg.apache.catalina.core.StandardThreadExecutor /标签属性和子元素
name线程池名称用于Connector中指定。namePrefix所创建的每个线程的名称前缀一个单独的线程名称为 namePrefixthreadNumber。maxThreads池中最大线程数。minSpareThreads活跃线程数也就是核心池线程数这些线程不会被销毁会一直存在。maxIdleTime线程空闲时间超过该时间后空闲线程会被销毁默认值为60001分钟单位毫秒。maxQueueSize在被执行前最大线程排队数目默认为Int的最大值也就是广义的无限。除非特殊情况这个值不需要更改 否则会有请求不会被处理的情况发生。prestartminSpareThreads启动线程池时是否启动 minSpareThreads部分线程。 默认值为false即不启动。threadPriority线程池中线程优先级默认值为5值从1到10。className线程池实现类未指定情况下默认实现类为 org.apache.catalina.core.StandardThreadExecutor。 如果想使用自定义线程池首先需要实现 org.apache.catalina.Executor接口。
3.1.6、Connector
Connector 用于创建链接器实例。默认情况下server.xml 配置了两个链接器一个支持HTTP协议一个支持AJP协议。因此大多数情况下我们并不需要新增链接器配置 只是根据需要对已有链接器进行优化。
Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 /
Connector port8009 protocolAJP/1.3 redirectPort8443 /标签属性和子元素 port端口号Connector 用于创建服务端Socket 并进行监听 以等待客户端请求链接。如果该属性设置为0Tomcat将会随机选择一个可用的端口号给当前Connector使用。 protocol当前Connector 支持的访问协议。 默认为 HTTP/1.1并采用自动切换机制选择一个基于 JAVA NIO 的链接器或者基于本地APR的链接器根据本地是否含有Tomcat的本地库判定。如果不希望采用上述自动切换的机制 而是明确指定协议 可以使用以下值。 Http协议
org.apache.coyote.http11.Http11NioProtocol 非阻塞式 Java NIO 链接器
org.apache.coyote.http11.Http11Nio2Protocol 非阻塞式 JAVA NIO2 链接器
org.apache.coyote.http11.Http11AprProtocol APR 链接器AJP协议
org.apache.coyote.ajp.AjpNioProtocol 非阻塞式 Java NIO 链接器
org.apache.coyote.ajp.AjpNio2Protocol 非阻塞式 JAVA NIO2 链接器
org.apache.coyote.ajp.AjpAprProtocol APR 链接器connectionTimeoutConnector接收连接后的等待超时时间 单位为毫秒。 -1 表示不超时。 redirectPort当前Connector 不支持SSL请求 接收到了一个请求 并且也符合 security-constraint 约束 需要SSL传输Catalina自动将请求重定向到指定的端口。 executor指定共享线程池的名称 也可以通过maxThreads、minSpareThreads 等属性配置内部线程池。 URIEncoding用于指定编码URI的字符编码 Tomcat8.x版本默认的编码为UTF-8 , Tomcat7.x版本默认为ISO-8859-1。 maxThreads池中最大线程数。 minSpareThreads活跃线程数也就是核心池线程数这些线程不会被销毁会一直存在。 acceptCount接收的连接数。 maxConnections接收的最大连接数。 compression是否压缩。 compressionMinSize压缩的大小。 disableUploadTimeout禁用上传超时。
完整的配置如下
Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 executortomcatThreadPool URIEncodingUTF‐8maxThreads1000 minSpareThreads100 acceptCount1000 maxConnections1000 compressionon compressionMinSize2048disableUploadTimeouttrue /3.1.7、Engine
Engine 作为Servlet 引擎的顶级元素内部可以嵌入 Cluster、Listener、Realm、 Valve和Host。
Engine nameCatalina defaultHostlocalhost
...
/Engine
标签属性和子元素
session-timeout 会话超时时间单位分钟。 cookie-config用于配置会话追踪Cookie。 nameCookie的名称。 domainCookie的域名。 pathCookie的路径。 commentCookie的注释。 http-onlyCookie只能通过HTTP方式进行访问JS无法读取或修改此项可以增 加网站访问的安全性。 secure此Cookie只能通过HTTPS连接传递到服务器而HTTP连接则不会传递该信息。注意是从浏览器传递到服务器服务器端的Cookie对象不受此项影响。 max-age以秒为单位表示cookie的生存期默认为‐1表示是会话Cookie浏览器 关闭时就会消失。
tracking-mode用于配置会话追踪模式Servlet3.0版本中支持的追踪模式 COOKIE、URL、SSL。
3.3.3、Servlet配置
Servlet 的配置主要是两部分 servlet 和 servlet-mapping
servletservlet-namemyServlet/servlet‐nameservlet-classcom.caochenlei.MyServlet/servlet‐classinit-paramparam-namefileName/param‐nameparam-valueinit.conf/param‐value/init‐paramload-on-startup1/load‐on‐startupenabledtrue/enabled
/servlet
servlet-mappingservlet-namemyServlet/servlet‐nameurl-pattern*.do/url‐patternurl-pattern/myservet/*/url‐pattern
/servlet‐mapping
标签属性和子元素
servlet
servlet-name指定servlet的名称 该属性在web.xml中唯一。servlet-class用于指定servlet类名。init-param用于指定servlet的初始化参数 在应用中可以通过 HttpServlet.getInitParameter 获取。param-name初始化参数名称。param-value初始化参数的值。load-on-startup用于控制在Web应用启动时Servlet的加载顺序 值小于0web应用启动时不加载该servlet第一次访问时加载。enabled若为false表示Servlet不处理任何请求。
servlet-mapping
servlet-name你想要让哪个servlet处理这里就写哪个servlet名称。url-pattern用于指定URL表达式一个 servlet‐mapping可以同时配置多个 url‐ pattern。
servlet 中文件上传配置
servletservlet-nameuploadServlet/servlet‐nameservlet-classcom.caochenlei.UploadServlet/servlet‐classmultipart-configlocationC://path/locationmax-file-size10485760/max‐file‐sizemax-request-size10485760/max‐request‐sizefile-size-threshold0/file‐size‐threshold/multipart‐config
/servlet标签属性和子元素
multipart-config上传的配置location存放生成的文件地址。max-file-size允许上传的文件最大值。 默认值为‐1 表示没有限制。max-request-size针对该 multi/form‐data 请求的最大数量默认值为‐1 表示无限制。file-size-threshold当数量量大于该值时 内容会被写入文件。
3.3.4、Listener配置
Listener用于监听servlet中的事件例如context、request、session对象的创建、修改、删除并触发响应事件。Listener是观察者模式的实现在servlet中主要用于对context、request、session对象的生命周期进行监控。在servlet2.5规范中共定义了8中Listener。在启动时ServletContextListener 的执行顺序与web.xml 中的配置顺序一致 停止时执行顺序相反。
listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener‐class
/listener标签属性和子元素
listener-class用于指定监听的类该类必须实现Listener接口。
3.3.5、Filter配置
filter 用于配置web应用过滤器 用来过滤资源请求及响应。 经常用于认证、日志、加密、数据转换等操作 配置如下
filterfilter-namemyFilter/filter‐namefilter-classcom.caochenlei.MyFilter/filter‐classasync-supportedtrue/async‐supportedinit-paramparam-namelanguage/param‐nameparam-valueCN/param‐value/init‐param
/filter
filter-mappingfilter-namemyFilter/filter‐nameurl-pattern/*/url‐pattern
/filter‐mapping标签属性和子元素
filter
filter-name用于指定过滤器名称在web.xml中过滤器名称必须唯一。filter-class过滤器的全限定类名该类必须实现Filter接口。async-supported该过滤器是否支持异步。init-param用于配置Filter的初始化参数 可以配置多个 可以通过FilterConfig.getInitParameter获取。param-name初始化参数名称。param-value初始化参数的值。
filter-mapping
filter-name这里指的是你想使用哪个过滤器进行过滤就写哪个过滤器的名称。url-pattern指定该过滤器需要拦截的URL。
3.3.6、欢迎页面配置
welcome-file-list 用于指定web应用的欢迎文件列表。尝试请求的顺序从上到下。
welcome-file-listwelcome-fileindex.html/welcome-filewelcome-fileindex.htm/welcome-filewelcome-fileindex.jsp/welcome-filewelcome-filedefault.html/welcome-filewelcome-filedefault.htm/welcome-filewelcome-filedefault.jsp/welcome-file
/welcome-file-list3.3.7、错误页面配置
error-page 用于配置Web应用访问异常时定向到的页面支持HTTP响应码和异常类两种形式。
error-pageerror-code404/error‐codelocation/404.html/location
/error‐page
error-pageerror-code500/error‐codelocation/500.html/location
/error‐page
error-pageexception-typejava.lang.Exception/exception‐typelocation/error.jsp/location
/error‐page四.tomcat 目录
1. bin 存放各种平台下启动和关闭Tomcat的脚本文件。其中有个档是catalina.bat打开这个windos配置文件在非注释行加入JDK路径例如 SET JAVA_HOMECj2sdk1.4.2_06 保存后就配置好tomcat环境了。 startup.bat是windows下启动tomcat的文件shutdown.bat是关闭tomcat的文件。
2. conf 存放不同的配置文件server.xml和web.xmltomcat启动的时候需要读取的配置文件:server.xml(tomcat主要配置文件)、web.xml和tomcatat-users.xml、catalina.policy(安全策略文件)等。修改了以后需要重启tomcat才能生效.最重要的是 server.xml配置tomcat组件的XML文件server.XML其中包括
I.顶层类元素[Top Level Elements] 位于整个配置文件的顶层 包括和
II.连接器类元素[Connectors ] 客户和服务容器类元素间的通讯接口。接受客户请求返回响应结果
II.容器类元素[Containers] 处理客户请求并且生成响应结果包含3个
IV.嵌套类元素[Nested Components] 可以加入到容器中的元素包括
一个包含一个或多个一个包含唯一一个和一个或多个多个共享一个一个包含多个每个定义一个虚拟主机包含一个或多个web应用 元素是代表一个在虚拟主机上运行的Web应用。标签的描述
3. Doc存放 Tomcat文档
4. Common存放Tomcat运行需要的库文件JARS
5. logs存放Tomcat执行时的LOG文件(日志文件)
6. src 存放Tomcat的源代码这个要看你下载的是何种tomcat啦
7. webappsTomcat的主要Web发布目录包括应用程序示例
8. work存放jsp编译后产生的class文件
9. temp 临时活页夹Tomcat运行时候存放临时文件用的。
tomcat 类加载
Bootstrap($JAVA_HOME/jre/lib/ext/*.jar) 其实直接双击该jar也会使得tomcat运行起来。
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.class lib/*.jar)
加载类和资源的顺序为
1、/Web-INF/classes
2、/Web-INF/lib/*.jar
3、Bootstrap
4、System
5、$CATALINA_HOME/common/classes
6、$CATALINA_HOME/common/endores/*.jar
7、$CATALINA_HOME/common/lib/*.jar
8、$CATALINA_HOME/shared/classes
9、$CATALINA_HOME/shared/lib/*.jar