Tomcat 是一款优秀的JSP/Servlet容器,最初由SUN开发,后来被贡献给了Apache社区。Tomcat现在的版本已到6。Tomcat6实现了 Servlet2.5和JSP2.1规范。针对web开发和web服务,提供了更多的新功能。本文使用的版本为Tomcat6.0.14,要求的JDK版 本至少为1.5。Tomcat不同版本间的配置有差异,如果读者使用的是其他版本,请仔细阅读Tomat官方文档,或者到网上寻找相关的资料。
Tomcat有安装版和解压缩版两种版本,安装版除了提供一个图形界面的后台和Windows服务外,其他的和解压缩版没有区别。我使用压缩版。
第一步,我们需要下载Tomcat,下载地址是http://tomcat.apache.org。下载完成后,解压缩,我的Tomcat位于C:/Tomcat6下,以下用$TOMCAT表示这个目录。
第二步,启动和停止
$TOMCAT/bin下面是Tomcat用到的脚本程序,扩展名为.bat是用于windows平台的批处理文件,扩展名为.sh的是用于linux或 Unix平台的脚本。我们通常用到的是startup.bat、shutdown.bat脚本。我们也可以用catalina.bat start启动Tomcat,用catalina.bat stop关闭Tomcat,事实上,startup.bat正是catalina.bat start的别名,同理shutdownup.bat 是catalina.bat stop的别名。
Catalina.bat才是操作Tomcat的核心脚本,可以通过catalina –help查看catalina可以使用的参数及其说明。启动Tomcat后,我们输入如下网址:http://localhost:8080/,如果看 到Tomcat的页面,证明安装成功,如果不成功,请检查是否设置了正确的JAVA_HOME,JDK的版本是否太低。如果还是不成功,可能是端口冲突, 下面将会介绍如何修改端口号。
TOMCAT配置
$TOMCAT/conf下是Tomcat的配置文件,最重要的配置文件是Servler.xml。Server.xml可以重新指定,方式是catalina.bat –config,比如指定config.xml取代Servler.xml,命令如下:
catalina.bat run –config conf/config.xml
Server.xml中可以配置部署应用需要的所有信息,从Tomcat5开始,应用配置可以从Server.xml独立出来,这也是 Tomcat现在所推荐的配置方式,带来的一个好处,显而易见,更容易维护了。另一个好处,是在Servler.xml的修改,只能通过重启Tomcat 才能发生作用,分拆后,修改完成,可以不用重启Tomcat就发生作用。本文就采用这种配置方式。下面进行详细的介绍。
(1) 端口的修改
Server元素下可以有多个Service,端口就是在Service元素下配置的。Connector元素的配置如下:
Xml代码
- <</span>Connnector port=”8080” protocal=”HTTP/1.1” connectionTimeout=”20000” redirectPort=”8443”/>
- <</span>Connnector port=”8080” protocal=”HTTP/1.1” connectionTimeout=”20000” redirectPort=”8443”/>
其中protocal制定了该端口侦听的协议类型,HTTP/1.1表示侦听的是客户的HTTP请求,即我们通过浏览器访问需要输入的端口,当端口号是 80的时候,可以不用在浏览器地址栏输入端口号,这就是我们访问很多网站不需要指定端口的原因。有时候protocal没有指定,这时候默认的是 HTTP/1.1。注意这个端口必须是闲置的。
Service下面可以配置多个端口,用于侦听不同的协议。
(2) 虚拟主机
Service元素下必须有一个Engine元素,Engine有一个名称,和一个默认的虚拟主机名,形式如下:
Xml代码
- <</span>Engine name="Catalina" defaultHost="localhost">
- <</span>Engine name="Catalina" defaultHost="localhost">
虚拟主机就配置在Engine元素下。形式如下:
Xml代码
- <</span>Host name="localhost" appBase="webapps"
-
- unpackWARs="true" autoDeploy="true"
-
- xmlValidation="false" xmlNamespaceAware="false">
-
- </</span>Host>
- <</span>Host name="localhost" appBase="webapps"
-
- unpackWARs="true" autoDeploy="true"
-
- xmlValidation="false" xmlNamespaceAware="false">
-
- </</span>Host>
name是虚拟主机的名字,appBase是虚拟主机指向的目录,Tomcat启动时,会自动加载appBase下的应用。 unpackWARs表示是否自动解压缩appBase下已打成WAR包的应用,autoDeploy表示在服务器运行的时候,将一个应用放入 appBase下,是否自动部署。
Tomcat应用部署
应用可以配置在Server.xml中,这里介绍分拆后的配法。
应用的独立配置文件应该配置在路径$TOMCAT/conf/engineName/hostName/下,其中engineName是应用所在的 Engine的名字,对于本例而言是Catalina,hostName是应用所在的虚拟主机的名字,本例为localhost。配置文件的名字是这样约 定的:如果访问路径就在虚拟主机下,那么名字为ROOT,如:ROOT.xml,其他情况下,文件名就是访问路径,不过需要用#替换路径中的/。本例中访 问路径为/struts,相应的文件名是struts.xml,内容如下:
Xml代码
- <</span>Context docBase="C:/WAP/struts" reloadable="true"/>
- <</span>Context docBase="C:/WAP/struts" reloadable="true"/>
其中docBase指定应用所在的目录,如果是相对目录,对应的就是虚拟主机下appBase的目录,也可以是绝对目录,这个时候应用在什么地方都可以。 reloadable表示是否支持热部署,比如class更新,如果reloadable为true,应用会重新部署。注意:在分拆后, Context的path属性将不再起作用,这是Tomcat6和之前的版本不同的地方。
以上配置完成,我们就可以访问应用了,访问地址是http://localhost:8080/struts
下面介绍资源的配置
这里指的主要是数据源的配置。Tomcat6使用的是DBCP数据源,它的配置方式如下:
Xml代码
- <</span>Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource" maxActive="100"
-
- maxIdle="30" maxWait="10000" username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
-
- url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"/>
- <</span>Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource" maxActive="100"
-
- maxIdle="30" maxWait="10000" username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
-
- url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"/>
它可以直接配置在Context元素下,这时数据源就只有他所属的应用能够访问。如果需要所有的应用能够访问,可以配置在$TOMCAT/conf/context.xml中,直接配置下根元素下即可。这个文件在启动tomcat的时候,所有的应用都会加载。
如果需要节省资源,共享同一个数据源,可以配置在Server.xml的GlobalNamingResources节点下,在应用中可以通过别名访问,提供别名的方式是在应用所在的元素下添加如下的子元素,例:
Xml代码
- <</span>ResouceLink name=”jdbc/test2” global=”jdbc/test” type=”javax.sql.DataSource”/>
- <</span>ResouceLink name=”jdbc/test2” global=”jdbc/test” type=”javax.sql.DataSource”/>
name就是别名,global是在GlobalNamingResources所定义的资源。
原文:http://blog.csdn.net/xyls12345/article/details/5898205