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位于D:\softer\tomcat下,以下用$TOMCAT表示这个目录。
一、配置环境变量(如果您用的是myeclipse开发的话不用配置环境变量的,直接在myeclipse里面配置即可):
下面是环境变量的具体设置
变量名 变量值
TOMCAT_HOME = Tomcat的根目录 如: D:\tomcat
CATALINA_BASE = Tomcat的根目录
CATALINA_HOME = Tomcat的根目录
变量名的解析:
catalina.home和catalina.base这两个属性仅在你需要安装多个Tomcat实例而不想安装多个软件备份的时候使用,这样能节省磁盘空间。
以Tomcat6.0为例,其Tomcat目录结构如下:
bin (运行脚本)
conf (配置文件)
lib (核心库文件)
logs (日志目录)
temp (临时目录)
webapps (自动装载的应用程序的目录)
work (JVM临时文件目录[java.io.tmpdir])
让我们看看这些目录那些可以被多个Tomcat实例公用,其实只有 bin 和 lib 目录,其它目录conf、logs、temp、webapps和work每个Tomcat实例必须拥有其自己独立的备份。
明白了上述关系就容易理解catalina.home和catalina.base的用途了。
catalina.home指向公用信息的位置,就是bin和lib的父目录。
catalina.base指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
仅运行一个Tomcat实例时,这两个属性指向的位置是相同的
简单的说,CATALINA_HOME是Tomcat的安装目录,CATALINA_BASE是Tomcat的工作目录。如果我们想要运行Tomcat的 多个实例,但是不想安装多个Tomcat软件副本。那么我们可以配置多个工作 目录,每个运行实例独占一个工作目录,但是共享同一个安装目录。
如果我们希望再运行另一个Tomcat实例,那么我们可以建立一个目录,把conf、logs、temp、webapps、work拷贝 到该目录下,然后让CATALINA_BASE指向该目录即可。
TOMCAT_HOME是为了配置环境变量方便起见
classpath:
.;%TOMCAT_HOME%\lib\servlet-api.jar;%TOMCAT_HOME%\lib\jsp-api.jar;
" . " 意思是当前路径 一般装好jdk 配置好path以后 在classpath上 加上 " . "就可以编译java文件了
%TOMCAT_HOME%\lib\下的两个jar包是关键api 没有他们你写的servlet就没有办法编译 所以说一定要的。
$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可以使用的参数及其说明。双击startup.bat启动tomcat,启动Tomcat后,我们输入如下网址:http://localhost:8080/,如果看到Tomcat的页面,证明安装成功,如果不成功,请检查是否设置了正确的JAVA_HOME,JDK的版本是否太低。如果还是不成功,可能是端口冲突,下面将会介绍如何修改端口号。
二、在myeclipse里面配置tomcat6
菜单上面:“window”-->"Preferences"-->
控制台显示启动时间
在浏览器里面输入地址即可看到一个小猫
三、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元素的配置如下:
<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有一个名称,和一个默认的虚拟主机名,形式如下:
<Engine name="Catalina" defaultHost="localhost">
虚拟主机就配置在Engine元素下。形式如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
name是虚拟主机的名字,appBase是虚拟主机指向的目录,Tomcat启动时,会自动加载appBase下的应用。unpackWARs表示是否自动解压缩appBase下已打成WAR包的应用,autoDeploy表示在服务器运行的时候,将一个应用放入appBase下,是否自动部署。
Tomcat应用部署
应用可以配置在Server.xml中,这里介绍分拆后的配法。
应用的独立配置文件应该配置在路径$TOMCAT\conf\engineName\hostName\下,其中engineName是应用所在的Engine的名字,对于本例而言是Catalina,hostName是应用所在的虚拟主机的名字,本例为localhost。配置文件的名字是这样约定的:如果访问路径就在虚拟主机下,那么名字为空,如 .xml,其他情况下,文件名就是访问路径,不过需要用#替换路径中的/。本例中访问路径为/struts,相应的文件名是struts.xml,内容如下:
<Context docBase="C:/WAP/struts" reloadable="true"/>
其中docBase指定应用所在的目录,如果是相对目录,对应的就是虚拟主机下appBase的目录,也可以是绝对目录,这个时候应用在什么地方都可以。reloadable表示是否支持热部署,比如class更新,如果reloadable为true,应用会重新部署。注意:在分拆后,Context的path属性将不再起作用,这是Tomcat6和之前的版本不同的地方。
以上配置完成,我们就可以访问应用了,访问地址是http://localhost:8080/struts
下面介绍资源的配置
这里指的主要是数据源的配置。Tomcat6使用的是DBCP数据源,它的配置方式如下:
<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节点下,在应用中可以通过别名访问,提供别名的方式是在应用所在的元素下添加如下的子元素,例:
<ResouceLink name=”jdbc/test2” global=”jdbc/test” type=”javax.sql.DataSource”/>
name就是别名,global是在GlobalNamingResources所定义的资源