tomcat配置文件server文件详解
- 格式:docx
- 大小:31.99 KB
- 文档页数:10
Tomcat中文手册Jakarta-Tomcat 简明中文版用户指南第一部分本文档提供关于Tomcat的基础信息.主要内容如下:Tomcat二进制版本安装与Tomcat相关的脚本的主要内容与server.xml相关的主要内容,Tomcat的主要配置文件如何设置Tomcat与宿主web服务器一起工作的说明如何应用Tomcat配置一个现实中的web站点希望此文档足以使新用户可以开始使用Tomcat.如找不到某方面的内容请(按以下顺序)查找Tomcat faq查找Tomcat包清单向Tomcat用户邮件列表发出问题如此疑问的答案不存在,我们鼓励把对疑问的解答放入Tomcat faq 或此文档.如对此文档有意见或建议,请发送到Tomcat的邮件列表.Getting StartedTomcat是一个带有jsp环境的servlet容器.servlet容器是一个根据用户的行为可以管理和激活servlet的运行时的shell.粗略地可以将servlet容器分为如下几类:独立的servlet容器内置有web服务器的一部分.指当使用基于Java的web服务器的情形,例如servlet容器是JavaWebServer的一个部分. 独立的servlet容器是Tomcat的默认模式.大多数的web服务器并非基于Java,因此,我们可以得出如下两种容器的模式.进程内的servlet容器servlet容器作为web服务器的插件和Java容器的实现.Web服务器插件在内部地址空间打开一个JVM(java virtual machine)使Java容器得以在内部运行.如有某个需要调用servlet的请求,,插件将取得对此请求的控制并将他传递(使用JNI)给Java容器.进程内容器对于多线程,单进程的服务器非常合适并且提供很好的运行速度,但伸缩性有所不足.进程外的servlet容器servlet容器运行于web服务器之外的地址空间且作为web服务器的插件和Java容器的实现的结合.web服务器插件和Java容器JVM使用IPC机制(通常是TCP/IP)进行通讯.当一个调用servlet 的请求到达时,插件将取得对此请求的控制并将其传递(使用IPC 等)给Java容器,进程外容器的反应时间或进程外容器引擎不如进程内容器,但进程外容器引擎在许多其他可比的范围内更好(伸缩性,稳定性等).Tomcat既可作为独立的容器(主要是用于开发与调试)又可作为对现有服务器的附加(当前支持Apache,IIS和Netscape服务器).即任何时候配置Tomcat你都必须决定如何应用他,如选择第二或第三种模式,你还需要安装一个web服务器接口.Tomcat与Jserv有何区别?Tomcat是Jserv吗?这是个常见的误解.Jserv是Servlet API2.0兼容并与Apache一起使用的容器.Tomcat是一个完全重写的并与Servlet API2.2和JSP1.1兼容的容器.Tomcat使用了一些为Jserv而写的代码,特别是Jserv的Apache 接口,但这是唯一的相同之处.怎样安装Tomcat的二进制版本?非常简单,只需:下载 zip/tar.gz 任何压缩文件,从/download/binindex.html处.解压缩此文件到某目录(如:foo).将会生成一子目录,名为”tomcat”.转换到”tomcat”目录设置一新的环境变量(TOMCAT_HOME)指向你安装的tomcat的目录WIN32平台,键入:“set TOMCAT_HOME=fo o\tomcat”Unix平台:如是bash/sh环境, 键入:”TOMCAT_HOME=foo/tomcat;export TOMCAT_HOME”如是tcsh环境, 键入:”setenv TOMCAT_HOME foo/tomcat”设置环境变量JAVA_HOME指向你JDK的目录,然后添加JAVA解释器到你的PATH环境变量.好了!现在可以运行TOMCAT并作为一个独立的Servlet容器(模式一)启动与关闭Tomcat使用”bin”目录中的脚本启动与关闭Tomcat.启动:uinx:bin/startup.shwin32:bin\startup关闭:unix:bin/shutdown.shwin32:bin\shutdownTomcat目录结构假设你已将Tomcat解压,你已得到下列目录结构:目录名--描述bin包含启动/关闭脚本conf包含不同的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件web.xmldoc包含各种Tomcat文档lib包含Tomcat使用的jar文件.unix平台此目录下的任何文件都被加到Tomcat的classpath中logsTomcat摆放日志文件的地方srcServletAPI源文件.先别高兴,这些只有些必须在Servlet容器内实现的空接口和抽象类webapps包含web项目示例此外你可以Tomcat会创建如下目录:workTomcat自动生成,放置Tomcat运行时的临时文件(如编译后的JSP 文件).如在Tomcat运行时删除此目录.JSP页面将不能运行. classes你可以创建此目录来添加一些附加的类到类路径中.任何你加到此目录中的类都可在Tomcat的类路径中找到自身.Tomcat的脚本Tomcat是一个Java程序,因此在设置好几个环境变量后即可用命令行的方式运行.然而设置Tomcat使用的每个环境变量和如下的命令行参数乏味且易错.因此,Tomcat开发组提供了一些脚本使启动和关闭Tomcat变得轻松.注意:这些脚本仅仅是个便利的方法去启动和关闭Tomcat.你可修改他们来定制CLASSPATH,环境变量如PATH,LD_LIBRARY_PATH,等等,只要是生成一个正确的命令行即可.这些脚本是什么呢?下表列出对一般用户最重要的脚本.tomcat主脚本.设置合适的环境变量,包括CLASSPATH,TOMCAT_HOME和JAVA_HOME和用适合的命令行参数启动Tomcatstartup在后台启动Tomcat.”tomcat start”命令的替换方式shutdown关闭Tomcat.”tomcat stop”命令的替换方式对用户最重要的脚本是tomcat(tomcat.bat/tomcat.sh).其他Tomcat相关的脚本作为一个简单的面向单任务的指向Tomcat脚本(设置不同的命令行参数等)的入口.仔细考察tomcat.bat/tomcat.sh,它按以下步骤运行:在Unix下的步骤:如未指定,推测 TOMCAT_HOME如未指定,推测 JAVA_HOME设置CLASS_PATH包含:1.${TOMCAT_HOME}/classes目录(如果存在)2.${TOMCAT_HOME}/lib的一切内容3.${JAVA_HOME}/lib/tools.jar(此jar文件包含工具javac,我们需要javac处理jsp文件.运行带有设定Java环境变量的命令行参数的java命令,调入tomcat.home,和org.apache.tomcat.startup.Tomcat 作为启始类.同时也传递命令行参数到org.apache.tomcat.startup.Tomcat ,例如:执行start/stop/run 等的操作此Tomcat进程使用指向server.xml的路径,例如server.xml放置于etc/server_1.xml并且用户意图在后台启动apache,键入如下命令行:bin/tomcat.sh start –f /etc/server_1.xml在Win32下的步骤:(略)由此可见,win32版的tomcat.bat与Unix版的几乎一致.尤其在它不推测TOMCAT_HOME和JAVA_HOME的值,并且不将所有的jar文件放入类路径中.Tomcat的配置文件Tomcat的配置基于两个配置文件:1.server.xml - Tomcat的全局配置文件2.web.xml - 在Tomcat中配置不同的关系环境这一部分将讲述如何使用这些文件.我们不会包含web.xml的内部机制,这些内部机制深入到了Servlet API的细节,因此,我们将讨论涵盖servler.xml内容及web.xml在Tomcat关系环境中的用法.server.xmlserver.xml是Tomcat的主配置文件.完成两个目标:1 提供Tomcat组件的初始配置.2 说明Tomcat的结构,含义,使得Tomcat通过实例化组件完成起动及构建自身, 如在server.xml所指定的下表描述server.xml种的重要元素:Jakarta-Tomcat 简明中文版用户指南第二部分元素及其描述Serverserver.xml文件中最重要的元素.Server定义了一个Tomcat服务器.一般你不用对他担心太多.Server元素能包含Logger和ContextManager元素类型Logger此元素定义一个Logger对象,每个Logger都有一个名字去标识,也有一个纪录Logger的输出和冗余级别(描述此日志级别)和包含日志文件的路径.通常有servlet的Logger(ServletContext.log()处),JSP和Tomcat运行时的Logger.ContextManagerContextManager说明一套ContextInterceptor, RequestInterceptor , Context和他们的Connectors的配置及结构.ContextManager有几个随同提供的特性:1. 用来纪录调试信息的调试级别2. webapps/,conf/,logs/和所有已定义的环境的基本位置.用来使Tomcat可以在TOMCAT_HOME外的其他目录启动.3. 工作目录的名字ContextInterceptor&RequestInterceptor这些侦听器(interceptors)侦听具体发生在ContextManager中的事件.例如,ContextInterceptor侦听Tomcat的启动及终止事件,RequestInterceptor监视在它服务过程中用户请求需要通过的不同阶段.Tomcat的管理员不必知道太多关于侦听器的知识;另外,开发者应该知道这是如何在Tomcat中实现一个”全局”型的操作(例如安全性及每个请求日志)ConnectorConnector表示一个到用户的联接,不管是通过web服务器或直接到用户浏览器(在一个独立配置中).Connector负责管理Tomcat的工作线程和读/写连接到不同用户的端口的请求/响应.Connector的配置包含如下信息:1.句柄类2.句柄监听的TCP/IP端口3.句柄服务器端口的TCP/IP的backlog.稍后我们将在此文档中描述如何配置Connector.Context每个Context提供一个指向你放置你Web项目的Tomcat的下属目录。
第一章 Tomcat概述一、Tomcat简介TOMCAT是APACHE JAKARTA软件组织的一个子项目,TOMCAT是一个JSP/SERVLET容器,它是在SUN公司的JSWDK(JAVA SERVER WEB DEVELOPMENT KIT)基础上发展起来的一个JSP和SERVLET规范的标准实现,使用TOMCAT可以体验JSP和SERVLET的最新规范。
经过多年的发展,TOMCAT不仅是JSP和SERVLET规范的标准实现,而且具备了很多商业JAVA SERVLET容器的特性,并被一些企业用于商业用途。
1、TomcatTomcat在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行Serlvet/JSP 的Web容器,不过Tomcat也扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等等。
Tomcat 是一种具有JSP环境的Servlet容器。
Servlet容器是代替用户管理和调用Servlet的运行时外壳。
1.1 SERVLET容器负责处理客户请求。
当客户请求来到时,SERVLET容器获取请求,然后调用某个SERVLET,并把SERVLET的执行结果返回给客户。
当客户请求某个资源时,SERVLET容器使用SERVLETREQUEST对象把客户的请求信息封装起来,然后调用JAVA SERVLET API中定义的SERVLET的一些生命周期方法,完成SERVLET的执行,接着把SERVLET执行的要返回给客户的结果封装到SERVLETRESPONSE对象中,最后SERVLET容器把客户的请求发送给客户,完成为客户的一次服务过程。
1.2 TOMCAT的工作模式1.2.1 独立的SERVLET容器TOMCAT的默认工作模式,作为独立的SERVLET容器,是内置在WEB服务器中的一部分,是指使用基于JAVA的WEB服务器的情形。
其他两种方式是TOMCAT与其他服务器集成的方式:1.2.2 进程内的SERVLET容器SERVLET容器作为WEB服务器的插件和JAVA容器的实现。
一个虚拟主机 ) appBase应用程序基本目录,即存放应用程序的目录 unpackWARs如果为true ,则tomcat 会自动将WAR 文件解压,否则不解压,直接从WAR 文件中运行应用程序 Logger ( 表示日志,调试和错误信息)className指定logger 使用的类名,此类必须实现org 。
apache 。
catalina.Logger 接口 prefix 指定log 文件的前缀 suffix 指定log 文件的后缀 timestamp如果为true ,则log 文件名中要加入时间,如下例:localhost_log 。
2001—10-04.txt Realm ( 表示存放用户名,密码及role 的数据库)className指定Realm 使用的类名,此类必须实现org.apache 。
catalina.Realm 接口 Valve ( 功能与Logger 差不多,其prefix 和suffix 属性解释和Logger 中的一样)className 指定Valve 使用的类名,如用org.apache.catalina.valves 。
AccessLogValve 类可以记录应用程序的访问信息 directory指定log 文件存放的位置 pattern有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。
combined 方式比common 方式记录的值更多<Server>元素它代表整个容器,是Tomcat 实例的顶层元素.由org.apache 。
catalina.Server 接口来定义.它包含一个〈Service>元素.并且它不能做为任何元素的子元素.< Server port ="8005" shutdown ="SHUTDOWN” debug =”0" >1〉className指定实现org。
tomcat内存配置及配置参数详解1、jvm内存管理机制:1)堆(Heap)和⾮堆(Non-heap)内存按照官⽅的说法:“ 虚拟机具有⼀个堆,堆是运⾏时数据区域,所有类实例和数组的内存均从此处分配。
堆是在 Java 虚拟机启动时创建的。
”“在JVM中堆之外的内存称为⾮堆内存(Non-heap memory)”。
可以看出JVM主要管理两种类型的内存:堆和⾮堆。
简单来说堆就是Java代码可及的内存,是留给开发⼈员使⽤的;⾮堆就是JVM留给⾃⼰⽤的,所以⽅法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运⾏时常数池、字段和⽅法数据)以及⽅法和构造⽅法的代码都在⾮堆内存中。
堆内存分配JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最⼤分配的堆内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存⼩于40%时,JVM就会增⼤堆直到-Xmx的最⼤限制;空余堆内存⼤于70%时,JVM会减少堆直到-Xms的最⼩限制。
因此服务器⼀般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的⼤⼩。
说明:如果-Xmx 不指定或者指定偏⼩,应⽤可能会导致ng.OutOfMemory错误,此错误来⾃JVM,不是Throwable的,⽆法⽤try...catch捕捉。
⾮堆内存分配JVM使⽤-XX:PermSize设置⾮堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最⼤⾮堆内存的⼤⼩,默认是物理内存的1/4。
(还有⼀说:MaxPermSize缺省值和-server -client选项相关,-server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。
这个我没有实验。
)上⾯错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。
Tomcat配置⽂件详解打开Tomcat的配置⽬录,我们会发现下⾯的配置⽂件:server.xml:Tomcat的主配置⽂件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;web.xml:遵循Servlet规范标准的配置⽂件,⽤于配置servlet,并为所有的Web应⽤程序提供包括MIME映射等默认配置信息;context.xml:所有host的默认配置信息;logging.properties:⽇志相关配置;tomcat-users.xml:Realm认证时⽤到的相关⾓⾊、⽤户和密码等信息;Tomcat⾃带的manager默认情况下会⽤到此⽂件;在Tomcat中添加/删除⽤户,为⽤户指定⾓⾊等将通过编辑此⽂件实现;catalina.policy:Java相关的安全策略配置⽂件,在系统资源级别上提供访问控制的能⼒,以安全模式启动Tomcat会使⽤这个配置catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此⽂件的相关设置;jaspic-providers.xml:⽤户认证配置⽂件这篇博客就来介绍下这⼏个配置⽂件的作⽤,以及常⽤的配置选项。
server.xml配置server.xml是Tomcat的主配置⽂件,可以对Service, Connector, Engine, Realm, Valve, Hosts等主组件进⾏相关配置。
<!-- port: 接收shutdown指令的端⼝,默认仅允许通过本机访问,默认为8005;shutdown:发往此Server⽤于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;使⽤⽅式:telnet localhost 8005,输⼊SHUTDOWN即可关闭tomcat如果你不配置这两个属性,Tomcat的这种关闭机制还是会运⾏的。
在 Apache Tomcat 中,可以使用<Host>元素来配置虚拟主机。
虚拟主机允许在单个Tomcat 服务器上托管多个域名或主机名。
以下是关于 Tomcat 中配置虚拟主机的详细规则:
1.在 server.xml 中配置 Host 元素:
要配置虚拟主机,你需要编辑 Tomcat 的server.xml文件。
在该文件中,你可以添加多个<Host>元素,每个元素对应一个虚拟主机的配置。
例如:
2.Host 元素的属性:
–name属性指定虚拟主机的名称,通常是主机名或域名。
–appBase属性指定应用程序基础目录,它是该虚拟主机中部署的应用程序的根目录。
3.添加 Context 元素:
在<Host>元素中,你可以使用<Context>元素来配置特定的 Web 应用程序。
<Context>元素允许你指定上下文路径和应用程序的位置。
例如:
这将在虚拟主机中部署位于appBase目录下的当前应用程序。
4.配置多个虚拟主机:
你可以在server.xml文件中配置多个<Host>元素,每个元素对应一个虚拟主
机。
这允许你在同一 Tomcat 服务器上托管多个域名或主机名。
5.重启 Tomcat 服务器:
一旦你完成了server.xml文件的配置更改,你需要重新启动 Tomcat 服务器,以便让更改生效。
确保在配置虚拟主机时小心谨慎,避免出现冲突或错误配置。
配置完毕后,你可以使用不同的域名或主机名访问同一 Tomcat 服务器上的不同应用程序。
tomcat部署(配置⽂件)⼀、启动tomcat服务器的⽅式1. 直接到tomcat服务器的bin⽬录下双击startup.bat2. 通过cmd进⼊bin⽬录,输⼊命令startup.bat1. 但这时会出现的问题是,服务器启动程序只是⼀闪⽽过,为什么呢?其实问题就是,没有Java的JDK,我们需要到环境变量配置系统变量JAVA_HOME。
我们都知道,1.5 以上的版本的JDK只需要配置path变量就可以了。
但是如果你想在机器上使⽤tomcat的话,你就必须配置JAVA_HOME,指向JDK的安装位置。
配置好之后我们就可以正常打开tomcat了,双击startup.bat,tomcat正常启动。
启动完成后,我们在浏览器地址栏上输⼊:http://localhost:8080,会得到以下的界⾯⼆、配置环境变量我们需要配置系统变量:ATALINA_BASE:指向tomcat的安装位置CATALINE_HOME:指向tomcat的安装位置Path:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin三、配置tomcat的端⼝号tomcat的默认服务端⼝是8080。
可以通过配置⽂件来改变该服务端⼝,甚⾄通过修改配置⽂件让tomcat同时在多个端⼝提供服务tomcat的配置⽂件都放在conf⽬录下。
使⽤⽆格式⽂本编辑器打开该⽬录下的server.xml⽂件,定位到68⾏处<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />其中,port="8080"就是web应⽤的服务端⼝,将8080改为任意端⼝,建议使⽤1024以上的端⼝,避免与公⽤端⼝冲突。
tomcatserver.xml配置详解<Server>元素它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接⼝来定义.它包含⼀个<Service>元素.并且它不能做为任何元素的⼦元素.<Server port="8005" shutdown="SHUTDOWN" debug="0">1>className指定实现org.apache.catalina.Server接⼝的类.默认值为org.apache.catalina.core.StandardServer2>port指定Tomcat监听shutdown命令端⼝.终⽌服务器运⾏时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.3>shutdown指定终⽌Tomcat服务器运⾏时,发给Tomcat服务器的shutdown监听端⼝的字符串.该属性必须设置<Service>元素该元素由org.apache.catalina.Service接⼝定义,它包含⼀个<Engine>元素,以及⼀个或多个<Connector>,这些Connector元素共享⽤同⼀个Engine元素<Service name="Catalina"> <Service name="Apache">第⼀个<Service>处理所有直接由Tomcat服务器接收的web客户请求.第⼆个<Service>处理所有由Apahce服务器转发过来的Web客户请求1>className 指定实现org.apahce.catalina.Service接⼝的类.默认为org.apahce.catalina.core.StandardService2>name定义Service的名字<Engine>元素每个Service元素只能有⼀个Engine元素.元素处理在同⼀个<Service>中所有<Connector>元素接收到的客户请求.由org.apahce.catalina.Engine接⼝定义.<Engine name="Catalina" defaultHost="localhost" debug="0">1>className指定实现Engine接⼝的类,默认值为StandardEngine2>defaultHost指定处理客户的默认主机名,在<Engine>中的<Host>⼦元素中必须定义这⼀主机3>name定义Engine的名字在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host><Host>元素它由Host接⼝定义.⼀个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了⼀个虚拟主机.它包含了⼀个或多个Web应⽤.<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">1>className指定实现Host接⼝的类.默认值为StandardHost2>appBase指定虚拟主机的⽬录,可以指定绝对⽬录,也可以指定相对于<CATALINA_HOME>的相对⽬录.如果没有此项,默认为<CATALINA_HOME>/webapps3>autoDeploy如果此项设为true,表⽰Tomcat服务处于运⾏状态时,能够监测appBase下的⽂件,如果有新有web应⽤加⼊进来,会⾃运发布这个WEB应⽤4>unpackWARs如果此项设置为true,表⽰把WEB应⽤的WAR⽂件先展开为开放⽬录结构后再运⾏.如果设为false将直接运⾏为WAR⽂件5>alias指定主机别名,可以指定多个别名6>deployOnStartup如果此项设为true,表⽰Tomcat服务器启动时会⾃动发布appBase⽬录下所有的Web应⽤.如果Web应⽤中的server.xml没有相应的<Context>元素,将采⽤Tomcat默认的Context7>name定义虚拟主机的名字在<Host>元素中可以包含如下⼦元素<Logger>, <Realm>, <Value>, <Context><Context>元素它由Context接⼝定义.是使⽤最频繁的元素.每个<Context元素代表了运⾏在虚拟主机上的单个Web应⽤.⼀个<Host>可以包含多个<Context>元素.每个web应⽤有唯⼀的⼀个相对应的Context代表web应⽤⾃⾝.servlet容器为第⼀个web应⽤创建⼀个ServletContext对象.<Context path="/sample" docBase="sample" debug="0" reloadbale="true">1>className指定实现Context的类,默认为StandardContext类2>path指定访问Web应⽤的URL⼊⼝,注意/myweb,⽽不是myweb了事3>reloadable如果这个属性设为true, Tomcat服务器在运⾏状态下会监视在WEB-INF/classes和Web-INF/lib⽬录CLASS⽂件的改运.如果监视到有class⽂件被更新,服务器⾃重新加载Web应⽤3>cookies指定是否通过Cookies来⽀持Session,默认值为true4>useNaming指定是否⽀持JNDI,默认值为了true在<Context>元素中可以包含如下元素<Logger>, <Realm>, <Resource>, <ResourceParams><Connector>元素由Connector接⼝定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.<Connector port="8080" maxThread="50" minSpareThreads="25"maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /><Connectionport="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />第⼀个Connector元素定义了⼀个HTTP Connector,它通过8080端⼝接收HTTP请求;第⼆个Connector元素定义了⼀个JD Connector,它通过8009端⼝接收由其它服务器转发过来的请求.Connector元素共⽤属性1>className指定实现Connector接⼝的类2>enableLookups如果设为true,表⽰⽀持域名解析,可以把IP地址解析为主机名.WEB应⽤中调⽤request.getRemoteHost⽅法返回客户机主机名.默认值为true3>redirectPort指定转发端⼝.如果当前端⼝只⽀持non-SSL请求,在需要安全通信的场命,将把客户请求转发⾄SSL的redirectPort端⼝HttpConnector元素的属性1>className实现Connector的类2>port设定Tcp/IP端⼝,默认值为8080,如果把8080改成80,则只要输⼊http://localhost/即可因为TCP/IP的默认端⼝是803>address如果服务器有⼆个以上ip地址,此属性可以设定端⼝监听的ip地址.默认情况下,端⼝会监听服务器上所有的ip地址4>bufferSize设定由端⼝创建的输⼊流的缓存⼤⼩.默认值为2048byte5>protocol设定Http协议,默认值为HTTP/1.16>maxThreads设定在监听端⼝的线程的最⼤数⽬,这个值也决定了服务器可以同时响应客户请求的最⼤数⽬.默认值为2007>acceptCount设定在监听端⼝队列的最⼤客户请求数量,默认值为10.如果队列已满,客户必须等待.8>connectionTimeout定义建⽴客户连接超时的时间.如果为-1,表⽰不限制建⽴客户连接的时间JkConnector的属性1>className实现Connector的类2>port设定AJP端⼝号3>protocol必须设定为AJP/1.3。
Tomcat6详解Tomcat的体系结构Tomcat 6.0⽀持Servlet2.5和Jsp2.1规范,由⼀系列嵌套的组件组成。
<Connector>元素的共同属性address:如果服务器上有两个以上IP地址,该属性可以设定端⼝监听的IP地址。
默认情况下,端⼝会监听服务器上所有IP地址。
no alloTrace:布尔值,设置为true,trace http的⽅法可⽤。
默认为false。
noenableLookups:如果设为true,表⽰⽀持域名解析,可以把IP地址解析为主机名。
false表⽰跳过域名解析,直接把IP地址作为字符串返回。
默认为true。
nomastPostSize:post请求字节的最⼤⼤⼩。
默认为2097152。
noredirectPort:指定转发端⼝,如果当前端⼝只⽀持non-ssl请求,在需要安全通信的情况下,⾃动将把客户请求转发到基于SSL的redirectPort端⼝。
noscheme:连接器使⽤的协议名称。
例如可以为SSL连接器,设置属性为https。
默认为http。
nosecure:如果是SSL连接的话,设置为true,当调⽤request.getScheme()时,返回该值。
默认值为false。
noURIEncoding:URI字节的解码字符编码,默认为iso-8859-1。
nouseBodyEncodingForURI:表明如果contentType指定的编码⽤于URI查询参数,则不⽤URIEncoding。
与Tomcat4.1.x兼容。
默认为false。
noHTTP<Connector>元素属性acceptCount:设定在监听端⼝队列中的最⼤客户请求数。
默认值为10,如果队列已满,客户请求将被拒绝。
no bufferSize:设定有端⼝创建的输⼊流的缓存⼤⼩,默认值为2048字节。
no compressableMimeTypes:设定http压缩mime类型,默认值为text/html,text/xml,text/plain。
Tomcat--各个⽬录详解(⼆)Tomcat整体⽬录:⼀、bin⽂件(存放启动和关闭tomcat脚本)其中.bat和.sh⽂件很多都是成对出现的,作⽤是⼀样的,⼀个是Windows的,⼀个是Linux。
① startup⽂件:主要是检查catalina.bat/sh 执⾏所需环境,并调⽤catalina.bat 批处理⽂件。
启动tomcat。
异常:打开可能有闪退的问题。
原因可能有以下两点: 1)缺少环境变量配置,startup会检查你的电脑环境变量是否有JAVA_HOME。
2)已经开启了Tomcat容器,再次开启端⼝号会被占⽤。
.BindException: Address already in use: JVM_Bind② catalina⽂件:真正启动Tomcat⽂件,可以在⾥⾯设置jvm参数。
异常:可能出现内存溢出错误可以考虑修改它 1)ng.OutOfMemoryError: Java heap space Tomcat默认可以使⽤的内存为128MB,在较⼤型的应⽤项⽬中,这点内存是不够的,从⽽导致客户端显⽰500错误。
Windows环境下修改catalina.bat⽂件,在⽂件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m Linux环境下修改catalina.sh⽂件,在⽂件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’ 其中,-Xms设置初始化内存⼤⼩,-Xmx设置可以使⽤的最⼤内存。
2) ng.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM 存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的 Heap区域不同,GC(Garbage Collection)不会在主程序运⾏期对PermGen space进⾏清理,所以如果你的应⽤ 中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进⾏pre compile的 时候。
Tomcat中的Server.xml配置详解Tomcat中的Server.xml配置详解Tomcat Server的结构图如下:该⽂件描述了如何启动Tomcat Server<Server><Listener /><GlobaNamingResources></GlobaNamingResources<Service><Connector /><Engine><Logger /><Realm /><host><Logger /><Context /></host></Engine></Service></Server>1、<Server>元素它代表整个容器,是Tomcat实例的顶层元素。
由org.apache.catalina.Server接⼝来定义。
它包含⼀个元素。
并且它不能做为任何元素的⼦元素。
<!-- ⼀个“Server”是⼀个提供完整的JVM的独⽴组件,它可以包含⼀个或多个“Service”实例。
服务器在指定的端⼝上监听shutdown命令。
注意:⼀个“Server”⾃⾝不是⼀个“Container”(容器),因此在这⾥你不可以定义诸如“Valves”或者“Loggers”⼦组件--><!-- 启动Server在端⼝8005处等待关闭命令如果接受到"SHUTDOWN"字符串则关闭服务器-->测试:telnet localhost 8005输⼊:SHUTDOWN结果:关闭tomcat<Server port="8005" shutdown="SHUTDOWN" debug="0">(1)className指定实现org.apache.catalina.Server接⼝的类。
配置Tomcat连接池(配置server.xml文件)收藏配置Tomcat连接池:1、配置conf\server.xml,创建DataSource资源,并且为其指定参数;2、在web.xml中引用资源;3、在javabean、servlet中使用资源;server.xml文件内容<!--path="/TomcatDbPools"表示你想用什么样的字符访问站点,即站点的访问方式以/TomcatDbPools结尾例:http://localhost:8080/ TomcatDbPoolsdocBase="TomcatDbPools" 你的组件在什么地方放着没有/则从webapps目录找debug="0" reloadable="true"是固定的--><Context path="/TomcatDbPools" docBase="TomcatDbPools" debug="0" reloadable="true"><!--name 指定资源池的Resource的JNDI的名字给连接池起的名字jdbc/TomcatDbPool1auth:管理权限指定管理Resource的Manager,可以是Container或Applicationtype:指出Resource所属的类名,是什么类型的数据源本例是SQL的--><Resource name="jdbc/TomcatDbPool1" auth="Container" type="javax.sql.DataSource"/><ResourceParams name="jdbc/TomcatDbPool1">指名为哪个连接池配置参数,即为jdbc/TomcatDbPool<!-- 指定DataResource的factory的名字--><parameter><name>factory</name><value>mons.dbcp.BasicDataSourceFactory</value></parameter><!-- 指定连接池中处于活动连接的最大数量0表示不受限制--><parameter><name>maxActive</name><value>100</value></parameter><!--指定空闲连接的最大数量0表示不受限制--><parameter><name>maxIdle</name><value>30</value></parameter><!-- 连接池中处于空闲状态的最大等待的毫秒数,-1表示无限等待--><parameter><name>maxWait</name><value>10000</value></parameter><!-- 连接的用户名和密码--><parameter><name>username</name><value></value></parameter><parameter><name>password</name><value></value></parameter><!-- 驱动程序jdbc桥--><parameter><name>driverClassName</name><value>sun.jdbc.odbc.JdbcOdbcDriver</value></parameter><!-- 数据库的Url --><parameter><name>url</name><value>jdbc:odbc:bookDSN</value></parameter></ResourceParams><!--我们也可以指出多个资源,这样在web.xml中指出引用的是哪个就行了下面的是使用SqlServer2000的驱动来访问数据库前提是要将SqlServer的驱动拷贝到tomcat下的common\lib目录下--><Resource name="jdbc/TomcatDbPool2" auth="Container" type="javax.sql.DataSource"/><ResourceParams name="jdbc/TomcatDbPool2"><!-- 指定DataResource的factory的名字--><parameter><name>factory</name><value>mons.dbcp.BasicDataSourceFactory</value></parameter><!-- 指定连接池中处于活动连接的最大数量0表示不受限制--><parameter><name>maxActive</name><value>100</value></parameter><!--指定空闲连接的最大数量0表示不受限制--><parameter><name>maxIdle</name><value>30</value></parameter><!-- 连接池中处于空闲状态的最大等待的毫秒数,-1表示无限等待--><parameter><name>maxWait</name><value>10000</value></parameter><!-- 连接的用户名和密码--><parameter><name>username</name><value>sa</value></parameter><parameter><name>password</name><value></value></parameter><!-- 驱动程序本地协议连接--><parameter><name>driverClassName</name><value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value></parameter><!-- 数据库的Url --><parameter><name>url</name><value>jdbc:microsoft:sqlserver://localhost\\b:1433;DatabaseName=book</value></parameter></ResourceParams></Context>2、在web.xml中引用资源;<?xml version="1.0" encoding="GB2312"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd"><web-app><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><!-- 在此处之处引用的是谁<resource-ref><description>ConnectionPool</description><res-ref-name>jdbc/TomcatDbPool1</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>--><!--我们在server.xml中配置了多个Resource,所以此处要指出来用的是哪个Pool.--> <resource-ref>--资源引用<description>ConnectionPool</description><res-ref-name>jdbc/TomcatDbPool2</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref></web-app>3、在javabean、servlet中使用资源;public void openConnection1(){try{ /*Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");String url="jdbc:odbc:bookDSN";conn=DriverManager.getConnection(url,"",""); *///获取连接的方式变化了(使用连接池)Context context=new InitialContext();if(context==null) {throw new Exception("No such Context");}//java:comp/env/是固定写法jdbc/TomcatDbPool1是serverl.xml中的资源的名字//用context.lookup方法从jdbc/TomcatDbPool1中得到一个数据源DataSourceds=(DataSource)context.lookup("java:comp/env/jdbc/TomcatDbPool1");conn=ds.getConnection();System.out.println("通过tomcat连接池创建连接成功!");}catch(Exception e) {System.out.println(e.getMessage()); }Web.xml配置:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "/j2ee/dtds/web-app_2_2.dtd"><web-app><display-name>XCFI Application</display-name><resource-ref><description>DB Connection</description><res-ref-name>jdbc/my_mssql</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref><session-config><session-timeout>30</session-timeout></session-config><!-- Listeners --><!-- sun add at 2007-01-14 --><listener><listener-class>xcfi.website.SessionCounter</listener-class></listener><welcome-file-list><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list><taglib><taglib-uri>oscache</taglib-uri><taglib-location>/WEB-INF/tld/oscache.tld</taglib-location></taglib><servlet><servlet-name>getimage</servlet-name><servlet-class>xcfi.utily.getimage</servlet-class></servlet><servlet><servlet-name>show_product_image</servlet-name><servlet-class>show_product_image</servlet-class></servlet><servlet><servlet-name>show_mews_images</servlet-name><servlet-class>xcfi.utily.show_mews_images</servlet-class> </servlet><servlet-mapping><servlet-name>getimage</servlet-name><url-pattern>/servlet/getimage</url-pattern></servlet-mapping><servlet-mapping><servlet-name>getimage</servlet-name><url-pattern>/servlet/getimage.jsp</url-pattern></servlet-mapping><servlet-mapping><servlet-name>show_product_image</servlet-name><url-pattern>/servlet/show_product_image</url-pattern></servlet-mapping><servlet-mapping><servlet-name>show_product_image</servlet-name><url-pattern>show_product_image.jsp</url-pattern></servlet-mapping><servlet-mapping><servlet-name>show_mews_images</servlet-name><url-pattern>/servlet/show_mews_images</url-pattern></servlet-mapping><!--<error-page><error-code>404</error-code><location>/index.jsp</location></error-page><error-page><error-code>500</error-code><location>/index.jsp</location></error-page>--></web-app>关于Tomcat与MySQL连接池问题的详解(2008-10-23 14:54:00)标签:tomcat java it分类:J2EE研究了一天,终于有所收获,希望对大家有所帮助。
【Tomcat】web应⽤的部署以及发布⼀、web项⽬⽂件的⽬录结构在tomcat中所有的应⽤都是放置在CATALINA_HOME/webapps下。
由于Servlet2.2之后的版本规范规定,tomcat中应⽤的⽬录结构需要满⾜固定的格式,这样便于规范⼀致性。
放置在webapps下的⽂件通常是两种格式:⼀种压缩好的项⽬⽂件,⽐如war包!⼀种是正常的⽂件夹。
如果是war包项⽬⽂件,tomcat会在启动后⾃动的把它解压缩到当前⽬录,变成可访问的⽂件夹。
项⽬⽂件的⽬录结构如下:/apps|------/WEB-INF|------/classes 编译的字节码⽂件|------/lib 需要的类库,jar包------web.xml|------/META-INF------context.xml------普通前端页⾯,jsp等等1. web.xml ⽂件:这个⽂件⽐较重要,也叫做部署描述符,⽤于配置web应⽤的相关信息。
⽐较常⽤的是监听器,过滤器,servlet,session管理,初始化参数等。
需要注意的是:注意相同项的配置顺序,tomcat会按照配置顺序进⾏执⾏或者加载。
需要注意的地⽅⽐如过滤器,还有⼀些页⾯的加载。
2. classes⽂件夹:放置编译出的.class⽂件,⽐如你定义的某个包:com.test.hello.java 经过tomcat的启动发布后,就会在响应的应⽤下的classes⽂件夹下找到com/test/hello.class⽂件。
类似的servlet, bean, 普通的java类都会编译到此处。
3. lib ⽂件夹:放置项⽬应⽤的jar包。
⽐如使⽤了SSH,在项⽬引⽤了jar包,最后都会放在这⾥。
这个⽂件夹下的jar⽂件是不会编译到classes⽂件夹下的。
详细信息参考tomcat的类加载机制。
这个⽂件夹下的jar包是属于应⽤⾃⼰使⽤的。
tomcat根⽬录下还有⼀个lib⽂件夹,这⾥⾯存放着基本的servlet和jsp需要的jar包。
web.xml文件详解一、web.xml文件介绍1.web.xml文件的作用web.xml主要用来配置Filter、Listener、Servlet等。
但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件。
2.WEB容器的加载过程WEB容器的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet。
在web.xml文件中最好按照这种顺序配置这些元素,以兼容较低版本的Tomcat。
3.WEB容器的启动过程WEB容器启动时,加载过程顺序如下:1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。
2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。
3.容器将<context-param>转换为键值对,并交给servletContext。
4.容器创建<listener>中的类实例,创建监听器。
二、web.xml配置元素1.<web-app>根元素web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素<web-app>中,都必须标明这个web.xml使用的是哪个模式文件。
其它的元素都放在<web-app></web-app>之中,<web-app>是根节点。
<web-app version="3.0"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"></web-app>2.<icon>Web应用图标指出IDE和GUI工具用来表示Web应用的大图标和小图标。
tomcat详细配置步骤版本:tomcat6.0第一步:下载jdk和tomcat:JDK下载Tomcat下载最新的jdk为1.6.10,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可。
1.安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在C:\Program Files\Java):JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)path=%JAVA_HOME%\bin接着可以写一个简单的java程序来测试JDK是否已安装成功:public class Test{public static void main(String args[]){System.out.println("This is a test program.");}}将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令javac Test.javajava Test此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat):CATALINA_HOME:c:\tomcatCATALINA_BASE:c:\tomcatTOMCAT_HOME: C:\Tomcat然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath 如下:classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar; 【注意最新版本的Tomcat中可能没有common这个文件夹了。
配置文件一般都在conf文件夹里,主要有server.xml,context.xml,tomcat_user.xml,web.xml四个常用配置文件,server主要是服务器设置的,例如端口设置,路径设置。
context 里设置tomcat数据源,用来连接数据库。
tomcat_user主要是用户名和密码的设置。
web 是默认首页等等之类的设置。
元素名属性解释server port指定一个端口,这个端口负责监听关闭tomcat 的请求shutdown指定向端口发送的命令字符串service name指定service 的名字Connector(表示客户端和service之间的连接)port指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求minProcessors服务器启动时创建的处理请求的线程数maxProcessors最大可以创建的处理请求的线程数enableLookups如果为true ,则可以通过调用request.getRemoteHost() 进行DNS 查询来得到远程客户端的实际主机名,若为false 则不进行DNS 查询,而是返回其ip 地址redirectPort指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理connectionTimeout指定超时的时间数( 以毫秒为单位)Engine(表示指定service 中的请求处理机,接收和处理来自Connector的请求)defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host 元素的name 属性值是一样的Context(表示一个web 应用程序,通常为WAR 文件,关于WAR 的具体信息见servlet 规范)docBase应用程序的路径或者是WAR 文件存放的路径path表示此web 应用程序的url 的前缀,这样请求的url为http://localhost:8080/path/****reloadable这个属性非常重要,如果为true ,则tomcat 会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes 目录的变化,自动装载新的应用程序,我们可以在不重起tomcat 的情况下改变应用程序host(表示name指定主机名一个虚拟主机 ) appBase 应用程序基本目录,即存放应用程序的目录 unpackWARs如果为true ,则tomcat 会自动将WAR 文件解压,否则不解压,直接从WAR 文件中运行应用程序 Logger ( 表示日志,调试和错误信息)className指定logger 使用的类名,此类必须实现org.apache.catalina.Logger 接口 prefix 指定log 文件的前缀 suffix 指定log 文件的后缀 timestamp如果为true ,则log 文件名中要加入时间,如下例:localhost_log.2001-10-04.txt Realm ( 表示存放用户名,密码及role 的数据库)className指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm 接口 Valve ( 功能与Logger 差不多,其prefix 和suffix 属性解释和Logger 中的一样)className指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValv e 类可以记录应用程序的访问信息 directory指定log 文件存放的位置 pattern有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。
combined 方式比common 方式记录的值更多<Server>元素它代表整个容器,是Tomcat 实例的顶层元素.由org.apache.catalina.Server 接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.< Server port ="8005" shutdown ="SHUTDOWN" debug ="0" >1>className 指定实现org.apache.catalina.Server 接口的类.默认值为org.apache.catalina.core.StandardServer2>port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.3>shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置<Service>元素该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素<Service name="Catalina"><Service name="Apache">第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求.第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求1>className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService2>name定义Service的名字<Engine>元素每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.<Engine name="Catalina"defaultHost="localhost"debug="0">1>className指定实现Engine接口的类,默认值为StandardEngine2>defaultHost指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机3>name定义Engine的名字在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host><Host>元素它由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.<Host name="localhost"debug="0"appBase="webapps"unpackWARs="true"auto Deploy="true">1>className指定实现Host接口的类.默认值为StandardHost2>appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps3>autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用4>unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件5>alias指定主机别名,可以指定多个别名6>deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context 7>name定义虚拟主机的名字在<Host>元素中可以包含如下子元素<Logger>, <Realm>, <Value>, <Context><Context>元素它由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.一个<Host>可以包含多个<Context>元素.每个web应用有唯一的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个ServletContext对象.<Context path="/sample"docBase="sample"debug="0"reloadbale="true">1>className指定实现Context的类,默认为StandardContext类2>path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事3>reloadable如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用3>cookies指定是否通过Cookies来支持Session,默认值为true4>useNaming指定是否支持JNDI,默认值为了true在<Context>元素中可以包含如下元素<Logger>, <Realm>, <Resource>, <ResourceParams><Connector>元素由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.<Connector port="8080"maxThread="50"minSpareThreads="25"maxSpareThread ="75"enableLookups="false"redirectPort="8443"acceptCount="100"debug="0"connectionTimeout="20000"disableUploadTimeout="true"/><Connection port="8009"enableLookups="false"redirectPort="8443"debug="0"protocol="AJP/1.3"/>第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.Connector元素共用属性1>className指定实现Connector接口的类2>enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true3>redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口HttpConnector元素的属性1>className实现Connector的类2>port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost即可因为TCP/IP的默认端口是803>address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务器上所有的ip地址4>bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte5>protocol设定Http协议,默认值为HTTP/1.16>maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为2007>acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.8>connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间JkConnector的属性1>className实现Connector的类2>port设定AJP端口号3>protocol必须设定为AJP/1.3=================================================================== =====================<Server>元素它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.<Server port="8005" shutdown="SHUTDOWN" debug="0">1> className指定实现org.apache.catalina.Server接口的类.默认值为org.apache.catalina.core.StandardServer2> port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.3> shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置<Service>元素该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素<Service name="Catalina"><Service name="Apache">第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求.第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求1> className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService2> name定义Service的名字<Engine>元素每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.<Engine name="Catalina" defaultHost="localhost" debug="0">1> className指定实现Engine接口的类,默认值为StandardEngine2> defaultHost指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机3> name定义Engine的名字在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host><Host>元素它由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">1> className指定实现Host接口的类.默认值为StandardHost2> appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps3> autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用4> unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件5> alias指定主机别名,可以指定多个别名6> deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context7> name定义虚拟主机的名字在<Host>元素中可以包含如下子元素<Logger>, <Realm>, <Value>, <Context><Context>元素它由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.一个<Host>可以包含多个<Context>元素.每个web应用有唯一的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个ServletContext对象.<Context path="/sample" docBase="sample" debug="0" reloadbale="true">1> className指定实现Context的类,默认为StandardContext类2> path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事3> reloadable如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用3> cookies指定是否通过Cookies来支持Session,默认值为true4> useNaming指定是否支持JNDI,默认值为了true在<Context>元素中可以包含如下元素<Logger>, <Realm>, <Resource>, <ResourceParams>Connector元素由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.<Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /><Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.Connector元素共用属性1> className指定实现Connector接口的类2> enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true3> redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口HttpConnector元素的属性1> className实现Connector的类2> port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost即可因为TCP/IP的默认端口是803> address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务器上所有的ip地址4> bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte5> protocol设定Http协议,默认值为HTTP/1.16> maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为2007> acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.8> connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间JkConnector的属性1> className实现Connector的类2> port设定AJP端口号3> protocol必须设定为AJP/1.3。