Tomcat详解
来源:互联网 发布:网络研修 编辑:程序博客网 时间:2024/05/22 09:04
概述: Tomcat在严格意思上并不是一个真正的应用服务器,只是一个可以支持servlet、JSP的web容器 它扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等,是Apache组织下的子项目。 目前Tomcat被非常广泛的应用于中小规模的Javaweb应用中 优点: 1.容易得到,直接去官网下载 2.对于开发人员,特别是Java开发人员,Tomcat提供了全部的源代码 包括servlet引擎,JSP引擎,http服务器, 3.TOMCAT使用率很高,基本和主流的服务器一起工作由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性Tomcat目录:bin:存放启动和关闭Tomcat脚本conf:存放不同的配置文件(server.xml和web.xml)doc:存放Tomcat文档logs:存放Tomcat执行时的log文件src:存放Tomcat的源代码webapps:主要存放web发布的目录(应用程序的示例)work:存放JSP编译后产出的class文件server.xml配置文件server.xml是Tomcat的主配置文件,主要完成两个目标: 1.提供Tomcat组件的初始配置,说明Tomcat的结构、含义,使得Tomcat通过实例化组件完成启动及构建自身 2.观察server.xml,可以发现里面包含一些元素: 1.Server元素: Server元素是server.xml文件最高级别的元素,描述一个Tomcat服务器, 一个Server元素一般会包含logger和ContextManage两个元素 logger: logger元素定义一个日志对象 一个日志对象包含哪些属性: 1.name:表示这个日志对象的名称 2.path:表示这个日志对象包含的日志的内容要输出哪一个日志 3.verbositylevel:表示这个日志文件记录的日志的级别 logger对象是对Java servlet,jsp,tomcat运行期事件的记录 contextManage: contextManage定义了一组contextInterceptors(contextManage事件监听器),requestInterceptors(事件监听器),contexts(web应用程序的上下文目录)和连接器(connectors)的结构和配置 1.debug: 表示记录日志记录调试信息的等级 2.home: webapps/conf/logs和context的根目录信息,这个属性的作用是从一个不同的TOMCAT_HOME的目录启动Tomcat 3.workDir:表示Tomcat的工作目录 注意: contextInterceptors和requestInterceptors两者都是监听contextManage的特定事件的拦截器 contextInterceptors:监听Tomcat的启动和结束事件的信息 requestInterceptors:监听用户对服务器发出的请求2.Connector元素: Connector(连接器)元素描述了一个到用户的连接,或者直接由Tomcat到用户的浏览器还是通过web服务器 Tomcat的工作进程和由不同的用户建立的连接来传递读写信息和请求、响应等都是由连接器对象管理 对连接器对象的配置中应该包含管理类,TCP IP 端口等内容 3.Context元素: 每一个Context元素都描述一个Tomcat的web应用程序的目录 包含的属性: 1.docBase: Context目录 2.path: 表示Context在web服务器时的虚拟目录位置和目录名 3.debug: 日志记录的调试信息的记录等级 4.reloadable: 这个属性可以方便servlet的开发,如果该属性处于打开的状态,tomcat将检查servlet是否被更新而决定自动重新载入 配置实例: 打开Tomcat/conf/server.xml 1.改变Tomcat服务器的端口号: 需要使用connector元素,connector表示一个到用户的连接,不管是通过web服务器或者直接到用户浏览器(在一个独立的配置中) connect偶尔负责管理Tomcat的工作线程和读写连接到不同用户的端口的请求/响应。 connector的配置包含的信息: 句柄类,句柄监听的TCP/IP端口、句柄服务器端口的TCP/IP 的backlog 注意: 修改后必须重启Tomcat服务器 可以将端口号改成80,需要保证80端口号没有被其他程序占用,另外,也可以同时配置两个端口号,只要产生两个connector的配置信息
server.xml配置
配置文件中的额基本配置信息: server: 一个服务器元素代表整个cantalina的servlet容器 1.port:指定一个端口,该端口负责监听关闭Tomcat的请求 2.shutdown:指定向端口发送命令字符串 service: 它由一个或多个连接器(connector)组成,以及Engine,负责处理所有的connector所获得的客户请求 1.name:指定service名称 Connector(表示客户端和service之间的连接): 一个Connector将在某个指定端口上监听客户的请求,并将获得的请求交给Engine来处理,从Engine获得相应的结果并返回给客户 Tomcat有两个典型的Connector 1.直接监听来自browser的http请求 2.监听来自其他的webService的请求 注意: coyote http/1.1 Connector在端口8080处监听客户来自browser的http请求 coyote jk1.3 Connector在端口8009处监听来自其他的webServer(Apache)的servlet/jsp的代理请求 1.port:指定服务器端需要创建的端口号,并可以在这个端口监听来自客户端的请求 2.minProcessors:为服务器启动时创建处理请求的线程数(最小) 3.MaxProcessors:最大可以创建处理请求的线程数 4.enableLookUps: 如果为true 则可以通过调用request.getRemoteHost();进行DNS查询来得到远程客户端的实际的主机名 如果为false: 则不进行DNS查找,返回IP地址 5.redirectport: 指定服务器正在处理http请求时收到一SSL传输请求后重定向的端口号 6.acceptCount: 指定当所有可以使用的处理请求的线程数,如果线程数都被使用,可以放到处理队列中的请求数,超过了这个请求数,就不予以处理 7.connectionTimeOut: 表示超时的时间数(一般以毫秒为单位)
Engine
概述: Engine下可以配置多个虚拟机主机,每一个虚拟主机都有一个域名,当Engine获得一个请求时,它把该请求匹配到某个host上,然后交由host来处理 Engine有一个默认的虚拟主机: 当请求无法匹配到任何一个host上的时候,将交给默认的host来处理(表示指定service中 的请求处理机,接受和处理来自connector的请求): 1.defaultHost:指定缺省的处理请求的主机名,它至少和其中一个host元素的name属性值相同 Context(表示一个web 应用程序): 1.docBase:表示程序的路径或者是WAR文件存放的路径 2.path:表示web应用程序的前缀,如:请求URL:http://localhost:8080/path/... 3.reloadable: 如果为true: 则Tomcat会自动检测应用程序的/WEB—_INF/lib和/WEB—_INF/classes目录的变化,自动加载新的应用程序,不需要重启Tomcat
host
定义:host表示一个虚拟主机:每个虚拟主机好某个网络域名(Domain name)相匹配每一个虚拟主机下都可以部署一个或多个web app ,每一个webapp对应一个Context,Context path,当host获得一个请求时,将把该请求匹配到某个context上,然后交由context处理, 匹配的方法:最长匹配 注意: path=""的context将成为该host的默认的context。所有无法和其他Context的路径名匹配的请求,都将最终和该默认的Context进行匹配。 1.name :表示指定的主机名 2.aooBase:表示应用程序的基本目录,即存放该应用程序的目录 3.unpackWARs: 如果为true: 则Tomcat会自动将WAR文件解压,反之不解压,直接从WAR文件中运行应用程序
Logger
logger :表示日志,调试和错误信息 1、className:指定logger使用的类名,此类必须实现org.apache.catalina.logger接口 2.prefix:指定logger文件的前缀 3.suffix:指定logger文件的后缀 4.timeStamp: 如果为true:表示在log文件名中加入时间(系统时间) 如:localhost_log.2017-07-12.txt valve(功能和logger差不多) 其中prefix和suffix属性解释和logger一样 不同: 1.classname:表示指定valve的使用类名, 如: org.apche.catalina.valve.accessLogValne类可以记录应用程序的访问信息 directory:表示log文件存放的位置pattern:common方式记录远程主机名,IP地址、用户名、日期、http响应代码、发送的字节数。
Realm
Realm:表示存放用户名、密码、role的数据库 1.className:表示realm的使用类名,此类必须实现 org.apche.catalina.realm接口
Tomcat管理
1.用户管理:在进行具体的Tomcat管理之前,可以先给Tomcat添加用户,使这个用户有权限进行管理<user name="user" password="user" roles="standard,manager"/>,重启Tomcat在浏览器里输入http://localhost:8080/manager,会弹出一个对话框,输入上面定义的用户名和密码2.应用程序管理: http://localhost:8080/manager/list, 浏览器会显示基本信息:应用程序的路径,当前的饿状态,连接程序的session数 3.重新加载应用程序 在浏览器输入http://localhost:8080/manager/reload?path=/exmples, 浏览器会显示该exmples是否加载成功 或者: 将server.xml的context元素的reloadable属性设置为true,则会自动加载 4.显示session的信息 http://localhost:8080/manager/session?path=/exmples, 5.启动和关闭应用程序 http://localhost:8080/manager/start?path=/exmples,//启动 http://localhost:8080/manager/stop?path=/exmples,//关闭
假设来自客户端的请求:http://localhost:8080/abc/abc_index.jsp1.请求被发送到本机端口8080,被在那里监听的coyote HTTP/1.1 Connector获得2.Connector把该请求交给它所在的service的Engine来处理,并等待来自Engine的回应3.Engine获得localhost:8080/abc/abc_index.jsp,匹配它所有的虚拟主机host4.如果Engine匹配带名字为localhost的host(即使匹配不到也可以交给host处理,被Engine的默认主机处理)5.localhost的host获得请求/abc/abc_index.jsp,匹配它所有的Context6.host匹配到路径为/abc的Context7.path=“/abc”的Context获得请求/abc_index.jsp,在它的mapping table中寻找对应servlet 8.Context匹配到URL PATTERN为*.jsp 的servlet,对应于JSPServlet类9.构造HttpServletRequest对象和HttpServletResponse对象作为参数调用JSPServlet的doget或者doPost方法10.Context把执行完的HttpServletResponse对象返回给host11.host把HttpServletResponse对象返回给Engine12.Engine在把HttpServletResponse对象在返回给Connector13.Connector把HttpServletResponse对象返回给客户浏览器
阅读全文
0 0
- Tomcat详解
- Tomcat详解
- Tomcat详解
- Tomcat详解
- tomcat详解
- tomcat详解
- Tomcat详解
- Tomcat详解
- tomcat详解
- Tomcat详解
- tomcat详解
- tomcat详解
- Tomcat详解
- Tomcat详解
- tomcat详解
- tomcat详解
- tomcat详解
- Tomcat详解!
- keras mnist cnn example
- ubuntu linux下解决“no java virtual machine was found after searching the following locations:” 方法
- android studio 引用Module或者第三方librar引起的jar冲突
- C++第三方库HPSocket数据的发送与接收
- 解耦与接口-程序员系列第二弹
- Tomcat详解
- HTMl5的sessionStorage和localStorage
- C#委托 子窗体给父窗体传值 用于进度条
- POJ-1679-The Unique MST [最小生成树][次小生成树]
- HDU 4422 The Little Girl Who Picks Mushrooms
- Centos 6关闭桌面
- HDU-2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(典型的多重背包)
- 滑动窗体最大值
- push多张照片至Android手机