tomcat原理解析

第1章Tomcat的安装与配置

Tomcat可以运行Servlet和JSP,是一个小型的轻量级应用服务器,它性能稳定、扩展性好、源码开放,是开发中小型Web应用系统的首选。本章首先介绍Tomcat服务器特点、层次结构、应用处理流程及发展史,然后讲述Tomcat的安装、设置和测试,接着介绍Tomcat 目录结构、常用配置平台、控制和管理程序等,最后设计一个不需数据库支持的简单聊天室。

1.1 Tomcat简介

Tomcat是Sun的JSWDK(Java Server Web Development Kit)中的Servlet容器,属于Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。

与传统桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件,它是许多文件构成的一个压缩包,包中的文件按照一定目录结构来组织,不同目录中的文件也具有不同的功能。部署应用程序时,只需要把WAR文件放到Tomcat的webapp目录下,Tomcat会自动检测和解压该文件。JSP文件第一次执行时,要先由Tomcat将其转化为Servlet文件,然后编译,所以速度会慢一些,但后继执行时速度会很快。

Tomcat既是一个Servlet容器,又是一个独立运行的服务器,像IIS、Apache等Web 服务器一样,具有处理HTML页面的功能。但它处理静态HTML文件的能力并不是太强,所以一般都是把它当作JSP/Servlet引擎,通过适配器(Adapter)与其他Web服务器软件(如Apache)配合使用。此外,Tomcat还可与其他一些软件集成起来实现更多功能,例如,与JBoss集成起来开发EJB、与OpenJMS集成起来开发JMS应用、与Cocoon(Apache的另外一个项目)集成起来开发基于XML的应用等。

Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,并且不断改进和完善。Tomcat适用于中小型系统和并发访问用户不太多的场合,是开发和调试JSP程序的首选。先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到了许多软件开发商的认可,成为目前相当流行的Web应用服务器。

1.1.1 Servlet简述

谈起Tomcat,就不能不说Servlet,如果没有Servlet的应用需求,就没有Tomcat的产

第1章Tomcat的安装与配置·3·

生。Servlet(小服务程序)是一个与协议无关的、跨平台的Web组件,它基于Java技术开发,由Servlet容器所管理。和运行在客户端浏览器中的Applet(小应用程序)相似,Servlet 运行在服务器端,可以动态地扩展服务器的功能,并采用“请求—响应”模式提供Web服务。Servlet的主要功能是交互式地浏览和修改数据,生成动态Web内容。

Servlet是平台独立的Java类,即按照Servlet规范编写的Java类,所以具有Java语言的所有优点,如良好的可移植性及安全性等。Servlet被编译为平台中立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行,就如同Applet对客户端一样,区别在于Servlet运行并不需要图形用户界面。

Java Servlet具有如下优点:

(1)Servlet可以和其他资源(数据库、文件、Applet和Java应用程序等)交互,把生成的响应内容返回给客户端。如果需要,还可以保存“请求—响应”过程中的信息。

(2)服务器采用Servlet可以完全授权对本地资源的访问,Servlet自身也会控制外部用户的访问数量及访问性质。

(3)Servlet可以从本地硬盘,或者通过网络从远端硬盘来激活。

(4)通过Servlet Tag技术,可以在HTML页面中动态调用Servlet。

(5)Servlet可以是其他服务的客户端程序。

(6)通过链接技术,一个Servlet可以调用另一个或一系列Servlet来成为它的客户端。

(7)Servlet API与协议无关。

1.1.2 Tomcat与Servlet之间的关系

当初在Apache开发时还未出现Servlet的概念,所以Apache不能内置支持Servlet。实际上,除了Apache,其他许多Web服务器软件都不能直接支持Servlet。为了支持Servlet,通常要单独开发程序,这种程序一般称为服务器小程序容器(Servlet Container),有时也叫做服务器小程序引擎(Servlet Engine)。它是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME 的响应,它在Servlet的生命周期内包容和管理Servlet,是一个实时运行的外壳程序。运行时由Web服务器软件处理一般请求,并把Servlet调用传递给“容器”来处理。Tomcat就是满足这种需要的JSP/Servlet引擎,是Sun公司的JSP/Servlet的官方实现。

按照工作模式的不同,Servlet容器可以分为以下3类:

1.独立运行的Servlet容器

在这种模式下,Servlet容器作为构成Web服务器的一部分而存在。当使用基于Java的Web服务器时,就属于这种情况。这种方式是Tomcat的默认模式,然而大多数Web服务器并不是基于Java的,所以就产生了下面的两种其他类型。

2.内置的Servlet容器

Servlet容器由Web服务器插件和Java容器两部分组成。采用这种方式时,Web服务器插件需要在某个Web服务器内部地址空间中打开一个JVM(Java虚拟机),在此JVM上

程序员突击——Tomcat原理与Java Web系统开发

·4·

加载Java容器并运行Servlet。如果客户端调用Servlet,Web服务器插件首先获得此请求的控制并将它传递(使用JNI技术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式运行速度较快,并且能够提供良好的性能,适用于单进程、多线程服务器,但是在伸缩性方面存在不足。

3.外置的Servlet容器

采用这种方式时,Servlet容器运行在Web服务器外部地址空间。先由Web服务器插件在某个Web服务器外部地址空间打开一个JVM(Java虚拟机),然后加载Java容器来运行Servlet。Web服务器插件和JVM之间使用IPC(进程间通信)机制(通常是TCP/IPSockets)。如果客户端调用Servlet,Web服务器插件首先获得此请求的控制并将它传递(使用IPCs技术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式对客户端请求的处理速度不如内置Servlet那样快,但是在其他方面(如可伸缩性、稳定性等)具有优势。

Tomcat属于Servlet容器,其工作模式也分为上述3种,所以Tomcat既可被用作独立运行的Servlet引擎(便于开发和调试),又可作为一个需要增强功能的Web服务器(如当前的Apache、IIS和Netscape服务器)插件。在配置Tomcat之前,就需要确定采用哪种工作模式,工作模式(1)比较简单,直接安装Tomcat即可,工作模式(2)和(3)有些复杂,除了安装Tomcat、Web服务器之外,还需要安装连接两者的中间连接件。

【专家提示】在本书中,如果没有特殊说明,Tomcat运行都采用独立运行的Servlet容器方式。

Java Servlet API是Servlet容器和Servlet之间的接口,它定义了Servlet的各种方法,还定义了Servlet容器传送给Servlet的对象类,其中最重要的是请求对象ServletRequest和响应对象ServletResponse。这两个对象都是由Servlet容器在客户端调用Servlet时产生的,Servlet容器把客户请求信息封装在ServletRequest对象中,然后把这两个对象都传送给要调用的Servlet,Servlet处理完后把响应结果写入ServletResponse,然后由Servlet容器把响应结果发送到客户端。Tomcat服务器接收客户端请求并作出响应的完整过程如图1-1所示。

客户端

Tomcat

Web服务器

HTTP请求

Servlet容器Servlet实例

ServletRequest

ServletResponse

HTTP响应

图1-1 Tomcat服务器响应客户请求过程

第1章Tomcat的安装与配置·5·

其中,①处表示Web服务器接收到客户端发出的HTTP请求后,转发给Servlet容器,同时把控制返回Servlet容器;②处表示Servlet容器把响应对象ServletResponse中的处理结果转发给Web服务器,通知Web服务器以HTTP响应的方式把结果发送到客户端,同时把控制返回Web服务器。

1.1.3 Tomcat层次结构

Tomcat服务器由一系列可配置组件构成,其中核心组件是Catalina Servlet容器,它是其他所有Tomcat组件的顶层容器。Tomcat各组件之间存在的层次关系如图1-2所示。

Server

Service

Connector

Engine

Host

Context

图1-2 Tomcat层次关系

【专家提示】Tomcat的组件可以在\conf\server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。

在XML文件的代码中,这些组件之间关系如下所示:

上述各组件将Tomcat分成若干层(Server层、Service层、Engine层、Host层、Context 层),各层通过数据管道PipeLine交互,如图1-3所示。

上述各层对应组件及其在Tomcat服务器中的作用如下:

(1)Server层

对应Server组件,逻辑上表示整个Tomcat,即整个Catalina Servlet容器。它处于Tomcat 顶层,可以包含一个或多个Service层。Tomcat提供了该层接口的一个默认实现,所以通常不需要用户自己去实现。

程序员突击——Tomcat 原理与Java Web 系统开发

·6· Connector

Server

Service

Connector Connector

Engine

Mapper Host Context

Context

PipeLine

图1-3 Tomcat 的层次结构

(2)Service 层

对应Service 组件,是包含在Server 层中的一个逻辑功能层。它包含一个Engine 层,以及一个或多个连接器(Connector )。Service 组件将一个或多个Connector 组件绑定到Engine 层上,Connector 组件侦听端口,获得用户请求,并将请求交给Engine 层处理,同时把处理结果发给用户,从而实现一个特定的实际功能。Tomcat 提供了Service 接口的默认实现,所以通常也不需要用户定制。

(3)Engine 层

对应Engine 组件,该层是请求分发处理层,可以连接多个Connector 。它从Connector 接收请求后,解析出可以完成用户请求的URL ,根据该URL 可以把请求匹配到正确的Host 上,当Host 处理完用户请求后,Engine 层把结果返回给适合的连接器,再由连接器传输给用户。该层的接口一般不需要用户来定制,特殊情况下,用户可以通过实现该接口来提供自定义的引擎。

(4)Host 层

对应Host 组件,该层表示一个虚拟主机,一个Engine 层可以包含多个Host 层,每个Host 层可以包含一个或多个Context 层,对应不同的Web 应用。因为Tomcat 给出的Host 接口的实现(类StandardHost )提供了重要的附加功能,所以用户通常不需要定制Host 。

(5)Context 层

对应Context 组件,该层代表某个虚拟主机上的实际目录或一个WAR ,即单个Web 应用程序,它运行在特定的虚拟主机中,使用最为频繁。一个Host 层包含多个Context 层,每一个Context 都有唯一的路径,Host 层接到请求后,根据用户请求的URL ,将请求定位到Context 层。

第1章Tomcat的安装与配置·7·1.1.4 Java Web应用处理

充当Java Web的容器是Tomcat服务器最主要的功能。Java Web在Sun的Java Servlet 规范中定义如下:Java Web应用由一组Servlet、HTML页、类,以及其他可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Web应用容器中运行。

由此定义可知,在Java Web应用中可以包含Servlet、JSP、类、静态文档和配置信息等。每个Web应用都对应唯一的Context,Servlet容器为每个运行的Java Web应用创建唯一的ServletContext对象,该对象被同一个Web应用中的所有组件所共享。

假设有3个Web应用,分别为HelloWorld、Counter和TableList,它们对应的主页URL 分别如下:

HelloWorld:http://localhost1:8080/HelloWorld/index.html

Counter:http://localhost1:80/Counter/index.jsp

TableList:http://localhost2:8086/TableList/index.jsp

3个用户分别访问上述3个地址,则Tomcat服务器各个组件响应用户请求的过程如图1-4所示,其中每个Context容器对应唯一的Java Web应用。

用户1用户2 用户3 Server

Service

Connector

8080端口

Connector

80端口

Connector

8086端口

Local

Host2

Context:HelloWorld

Local

Host1

Engine

index.html

Context:Counter

Context:TableList

index.jsp

Index.jsp 图1-4 Tomcat服务器各组件响应用户请求过程

1.1.5 Tomcat发展

随着Sun公司发布的Servlet/JSP规范不断完善和升级,Tomcat的版本也逐步更新。Tomcat版本和Servlet/JSP规范之间的对应关系如表1-1所示。

·8·

程序员突击——Tomcat原理与Java Web系统开发

表1-1 Tomcat版本和Servlet/JSP规范

Tomcat版本Servlet/JSP规范

6.0.14 2.5/2.1

5.5.x 2.4/2.0

4.1.27 2.3/1/2

其中,Tomcat目前的最新版本是Tomcat 6.0.14,它支持最新的J2SE标准、执行效率高、使用方便、发展前景良好,所以本书围绕Tomcat 6.0.14展开讲述。

1.2 Tomcat的安装

本节将介绍Tomcat工作环境的安装、基本的启动与停止方法、JDK的安装与JVM性能调整、二进制版本的Tomcat安装以及从源代码安装Tomcat,最后讲解如何启动、停止和自动启动Tomcat,并进行安装的测试。

1.2.1 安装准备

在安装Tomcat之前必须先安装JDK。JDK的全称是Java Development Kit,是Sun公司免费提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)。编写好的Java 源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。

在平台兼容性方面,JDK作为解释字节码文件并据此调用操作系统API实现对应功能的Java虚拟机,与操作系统类型和平台位数密切相关,因此存在不同类型的版本,而Tomcat 也具有上述特征,所以需要预先下载JDK和Tomcat,这两个软件的版本和下载地址如下:JDK选择Sun官方网站提供的JDK-6U1,下载网址为https://https://www.360docs.net/doc/d613823840.html,/ECom/ EComActionServlet;jsessionid=6C6B460AC2EF83F7FF253E51D5B5BA1C。

用户访问上述网址需要注册,注册后就可以根据自己的计算机平台配置选择合适版本。

如果使用32位Windows系统,那么选择下载:

Windows Offline Installation (build 06),Multi-language

jdk-6u2-windows-i586-p.exe

如果使用32位Linux系统,那么选择下载:

Linux RPM in self-extracting file (build 05)

jdk-6u2-linux-i586-rpm.bin

如果使用64位Windows系统,那么选择下载:

Windows x64 executable (build 05)

jdk-6u2-windows-amd64.exe

如果使用64位Linux系统,那么选择下载:

第1章 Tomcat 的安装与配置

·9·

Linux x64 RPM in self-extracting file (build 05)

jdk-6u2-linux-amd64-rpm.bin

Tomcat 选择apache - tomcat 6.0.14,下载网址为https://www.360docs.net/doc/d613823840.html,/download-60.cgi 。 在如图1-5所示的下载页面中,Binary Distributions (二进制发行版)下方有若干组下载项,每组下载项有两个不同的版本对应不同的操作系统,其中zip 是Windows 平台下运行版本,tar.gz 是Linux

平台下运行版本。其中Core 组和Administration Web Application 组必须下载,这两组分别对应Tomcat 核心安装包和控制平台包,其他组内容可以根据需要来决定是否下载。

图1-5 Tomcat 下载页面

本书内容都基于32位Windows 系统,所以JDK 选择jdk-6u1-windows-i586-p.exe ,Tomcat 选择apache- tomcat 6.0.14.zip 和apache- tomcat 6.0.14-admin.zip 。

对于Windows 操作系统,tomcat 6.0.14提供了两种安装文件,一个文件为apache-tomcat 6.0.14.exe ,另一个文件为apache-tomcat 6.0.14.zip 。apache-tomcat 6.0.14.exe 是可运行的安装程序,读者只需要双击这个文件,即可开始安装Tomcat 。在安装过程中,安装程序会自动搜寻JDK 和JRE 的位置,并把Tomcat 服务加入到Windows 操作系统的服务中,同时在“开始”→“程序”菜单中加入Tomcat 服务器管理菜单。apache-tomcat 6.0.14.zip 是一个压缩包,只需要把它解压到本地硬盘即可,这种方式既适合Windows 系统下的安装,也适用于其他操作系统,例如Linux 系统,所以下面主要介绍apache-tomcat 6.0.14.zip 的安装与Tomcat 运行环境的设置。

1.2.2 JDK 安装及设置

(1)双击jdk-6u1-windows-i586-p.exe ,弹出如图1-6所示界面。单击“接受”按钮进

程序员突击——Tomcat 原理与Java Web 系统开发

·10· 入下一步。

图1-6 执行安装程序

(2)选择安装内容及路径,如图1-7所示。

其中,中间列表是要安装的可选功能,单击每个可选功能左边的按钮,将弹出下拉菜单,其选项内容包括“此功能将安装在本地硬盘驱动器上”、“此功能及所有子功能将安装在本地硬盘驱动器上”、“现在不安装此功能”和“此功能将不可用”,系统默认均为第一个选项。

(3)安装JRE

,如图1-8所示。

图1-7 选择安装内容及路径 图1-8 设置JRE 安装内容及路径 【专家提示】系统默认安装路径是C:\Program Files\Java\jdk1.6.0_02\,若想安装到其他路

径,可单击右边的“更改(A )…”按钮,选择其他安装路径。建议将JDK

安装在C 盘根目录下,即JDK 的安装目录是C:\ jdk1.6.0_02\。

设置好安装内容及路径后,单击“下一步(N )”按钮,即在选择的安装路径下开始安装所选的内容。

第1章 Tomcat 的安装与配置

·11·

JRE 是Java Runtime Environment 的缩写,是Java 运行环境,即Java 平台。和第二步界面相似,中间列表是要安装的可选功能,系统默认的都是第一个选项。下面是系统安装路径,默认是C:\Program Files\Java\jre1.6.0_02\,若想安装到其他路径,可单击右边的按钮,选择其他安装路径,JRE 按照默认路径安装即可。

设置好安装内容及路径后,单击“下一步(N )”按钮,即可在选择的安装路径下安装所选的内容。安装完毕后弹出如图1-9所示界面,提示JDK 安装完成。

图1-9 安装完成

安装完成后可以发现系统存在两套JRE ,一套位于\jre 目录下(即C:\jdk1.6.0_02\jre ),另一套位于C:\Program Files\Java\jre1.6.0_02目录下,后面这套比前面那套少了Server 端的JVM ,把前面那套Server 端的JVM 复制过来后两者效果一样。其实,在上述步骤中的第二步,已经安装了JDK 和JRE (第一套),第三步安装的是第二套JRE 。

安装两套JRE 的原因是:JDK 是基于DOS 界面的Java 程序集成开发环境,而JRE 是Java 程序运行的必备平台,即所谓的JVM 。安装两套JRE ,就是在机器上安装了两个JVM ,它们都可以运行Java 程序。Java 应用程序可以分为两种,一种是JDK 目录中的应用程序,另一种是根据各种应用需要开发的一般Java 程序。它们执行时分别使用不同的JRE ,可以减少搜索时间,利用JRE 并行运行的特点来提高程序执行速度,所以C:\jdk1.6.0_02\jre 下的JRE 运行JDK 目录中的应用程序,而C:\Program Files\Java\jre1.6.0_02下的JRE 运行一般Java 应用程序。

安装完成后需要重新启动计算机,然后设置环境变量,步骤如下:

(1)右击“我的电脑”,在弹出的快捷菜单中选择“属性”命令,打开“系统属性”对话框,选择“高级”选项卡,单击“环境变量”按钮,打开“环境变量”对话框,如图1-10所示。

(2)单击“系统变量”选项区域中的“新建”按钮,打开“新建系统变量”对话框,变量名设置为JAVA_HOME ,变量值设置为C:\jdk1.6.0_02,如图1-11所示,此变量值为JDK 安装目录所在位置。

程序员突击——Tomcat 原理与Java Web 系统开发

·12·

图1-10 “环境变量”对话框 图1-11 “新建系统变量”对话框 (3)再新建一个系统变量,变量名设置为classpath ,变量值设置为;C:\jdk1.6.0_02\lib; C:\jdk1.6.0_02\lib\tools.jar ,此变量值表示搜索Java 类的路径,该路径中包含一些Jar 归档文件或者相应的目录,Java 程序执行时往往会从classpath 中选择并添加自己需要的类路径。设置时需要注意,变量值最前面的“.”表示当前路径,不可以省略,不同值之间用“;”隔开。

(4)选中“系统变量”面板中的Path 变量,然后单击“编辑”按钮,在弹出的“编辑系统变量”对话框中,在变量值的最后添加;C:\jdk1.6.0_02\bin ,此变量设置一些常用目录,该目录中的文件在任何地方都可以直接访问,从而免去了在不同目录间反复切换的麻烦。

【专家提示】为了检验环境变量设置是否成功,可以采用下面的方法:选择“开始”→“运

行”命令,输入cmd ,进入DOS 界面,然后在其中运行java 和javac 这两个

命令,如果输出对应的帮助信息,则表明环境变量已经设置成功。

1.2.3 Tomcat 安装及设置

把Tomcat 压缩文件apache-tomcat-6.0.14.zip 中的内容解压缩到C:\apache-tomcat-6.0.14下,然后按照1.2.2节中增加系统变量的方法增加系统变量。

变量名:TOMCAT_HOME ;变量值:C:\apache-tomcat-6.0.14。然后修改系统变量classpath ,添加%TOMCAT_HOME%\common\lib\servlet-api.jar ;同时修改系统变量path ,添加%TOMCAT_ HOME%\bin 。

1.2.4 测试Tomcat

要测试Tomcat 服务器是否安装成功,首先要启动Tomcat 服务器。在Tomcat 安装目录

第1章 Tomcat 的安装与配置

·13·

C:\apache-tomcat-6.0.14下面有一个bin 目录,里面有两个文件:startup.bat 和shutdown.bat ,分别控制Tomcat 的启动和关闭。由于在1.2.3节中已经把该目录加入到系统变量Path 中,所以在命令行中直接输入对应的文件名即可实现Tomcat

的启动和关闭,而不需要切换目录。在命令行中输入startup.bat ,即可启动Tomcat ,如图1-12所示。

图1-12 启动Tomcat

然后在浏览器地址栏中输入http://localhost:8080,按Enter 键访问。如果出现如图1-13所示界面,则说明Tomcat 安装成功。

图1-13 Tomcat 默认主页

该界面是Tomcat 服务器默认主页,对应文件是Tomcat 安装目录下的webapps\ROOT\ index.jsp 。该页面包含很多有用信息,对初学者大有益处,左边由上至下分为5个链接块,内容分别是系统管理(Administration )、Tomcat 文档(Documentation )、Tomcat 在线服务(Tomcat Online )、代码事例(Examples )和其他内容(Miscellaneous )。页面正文中提供

程序员突击——Tomcat 原理与Java Web 系统开发

·14· 两个Tomcat 服务邮箱方便用户咨询,其中的users@https://www.360docs.net/doc/d613823840.html, 解答用户在Tomcat 配置和使用中遇到的问题,dev@https://www.360docs.net/doc/d613823840.html, 解答用户在利用Tomcat 进行Web 开发中遇到的问题。

下面测试一般JSP 页面是否可以在Tomcat 下正常运行。

编写一个测试页面csaitest.jsp ,内容如下:

JSP Test Page

Current Time is <%= new java.util.Date() %>

<% out.println("

Welcome to JSP World!

"); %>

把该文件放置在Tomcat 安装目录下的webapps\ROOT 文件夹中,然后在浏览器地址 栏中输入http://localhost:8080/csaitest.jsp ,按Enter 键访问。正常情况下应该出现如图1-14所示界面。

图1-14 测试页面

在浏览器地址栏中输入的8080表示端口号,端口(port )是计算机与外界通信交流的出口。硬件领域的端口又称接口,如USB 端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,包括一些数据结构和I/O (基本输入/输出)缓冲区。

8080端口一般用于WWW 代理服务,可以实现网页浏览。在访问某个网站或使用代理服务器时,经常加上“:8080”端口号,所以除了Tomcat ,其他应用程序有时也会占用8080

第1章 Tomcat 的安装与配置

·15·

端口,如Oracle 、JBoss 等,这就会造成端口冲突问题,如图1-15所示。而且8080端口可以被各种病毒程序所利用和攻击,所以在某些情况下需要修改Tomcat 的默认8080端口。下面以把Tomcat 的8080端口改成8000端口为例讲解如何修改Tomcat 默认端口号。Tomcat 安装目录下的conf 子目录存放Tomcat 服务器的各种配置文件,其中的server.xml 是一个标准的XML 文档,在其中可以修改Tomcat 默认端口号。利用任一文本编辑工具打开server.xml ,将8080

端口改为8000端口。对于初学者而言,由于不熟悉该文档结构,寻找修改端口号的位置有些困难。可以利用文本编辑工具的查找功能寻找8080字符串,找到后把该字符串改成8000即可。

图1-15 8080端口冲突

在Tomcat 安装目录下有一个bin 目录,里面的文件与Tomcat 的启动与关闭有关。用记事本打开文件startup.bat 和shutdown.bat ,发现它们执行的是同一目录下的脚本catalina.bat ,只不过是对应的参数不同。catalina.bat 是控制Tomcat 运行的重要脚本,允许采用命令行参数输入形式,使用方式为catalina 参数。不同参数实现的功能如表1-2所示。

表1-2 catalina.bat 执行参数列表 命令行参数

功 能 解 释 Debug

在调试模式下启动Tomcat 服务器 debug -security

在带安全管理的调试模式下启动Tomcat 服务器 jpda start

在jpda 调试模式下启动Tomcat 服务器 Run

在当前DOS 窗口启动Tomcat 服务器 run -security

在带安全管理的当前DOS 窗口启动Tomcat 服务器 Start

在新的DOS 窗口启动Tomcat 服务器 start -security

在带安全管理的新的DOS 窗口启动Tomcat 服务器 Stop

关闭Tomcat 服务器 Version 显示Tomcat 系统配置信息

其中系统默认参数是start ,即在新窗口中启动Tomcat 服务器。命令行参数加入-security

程序员突击——Tomcat 原理与Java Web 系统开发

·16· 表示在安全管理模式下运行,否则表示在一般模式下运行。两种模式不同之处在于采用的安全策略文件不同,一般模式下采用的安全策略文件是JDK 安装目录\jre\lib\security 子目录中的java.policy ,而在安全管理模式下采用的安全策略文件是Tomcat 安全目录\conf 子目录中的catalina.policy 。很明显,安全管理模式的安全程度要高于一般模式。命令行参数中的jpda 指的是Java 平台调试构架,是一组API 集合,包括接口和协议,可以对运行中的Java 应用程序进行全方位调试。

1.3 Tomcat 的配置

运行Tomcat 之后,需要对Tomcat 进行个性化的设置。本节将介绍包括虚拟机、站点参数和用户验证等方面的Tomcat 配置。

1.3.1 Tomcat 目录结构

在配置Tomcat 之前,首先要了解

Tomcat 的目录结构。Tomcat 安装后目录层次结构如图1-16所示。

图1-16 Tomcat 安装目录

不同目录的用途如表1-3所示。

表1-3 Tomcat 目录结构及用途 目 录

用 途 \bin

存放启动和关闭Tomcat 的脚本文件 \common\lib

存放Tomcat 服务器及所有Web 应用都可访问的JAR 文件 \conf

存放Tomcat 服务器的各种配置文件,包括server.xml 、web.xml 、catalina.policy 等 \logs

存放Tomcat 的日志文件 \server\lib

存放Tomcat 服务器可以访问的JAR 文件 \server\webapps 存放Tomcat 自带的两个Web 应用:admin 和manager ,用来管理Tomcat 的Web 服务

\shared\lib

存放所有Web 应用都可以访问的JAR 文件 \temp

存放Tomcat 运行时的临时文件 \webapps

Web 应用的发布目录,把Web 应用文件放入该目录下就可以通过Tomcat 服务器来访问 \work 存放JSP 经过Tomcat 编译后生成的Servlet 由表1-3可知,在\common\lib 、\server\lib 和\shared\lib 目录下都可以存放JAR 文件,

第1章Tomcat的安装与配置·17·

但是有所区别:在\common\lib目录下的JAR文件可以被Tomcat服务器和所有Web应用访问;在\server\lib目录下的JAR文件只可以被Tomcat服务器访问;在\shared\lib目录下的JAR 文件可以被所有的Web应用访问,但不能被Tomcat服务器访问。

1.3.2 Tomcat常用配置文件

在Tomcat目录中,比较重要的配置文件有\conf下的tomcat-users.xml、server.xml以及\webapps中应用程序目录下的web.xml。Tomcat采用基于角色的访问控制模型管理用户对系统的使用,安全性比较高,其角色和对应用户都保存在tomcat-users.xml中。Tomcat服务器是由一些可配置的组件构成,在server.xml文件中可以对这些组件进行配置,每个Tomcat 组件和server.xml文件是一一对应的。web.xml是按照Servlet规范定义的Web应用发布描述符文件,是完全独立于Tomcat容器的Web应用配置文件。

下面是一个tomcat-users.xml文件的内容:

其中,文件开头声明了XML的版本和编码方式,之间描述了系统中的角色和用户。其中表示建立了一个名字叫tomcat 的角色;表示建立了一个用户,名字为tomcat,密码为tomcat,拥有角色tomcat所拥有的权限。一个用户可以拥有多个角色的权限,表明用户both 拥有角色tomcat和role1两者的权限。该文件具有扩充性,用户可以增加角色和用户。

1.3.3 Tomcat管理程序

实际使用中,需要配置Tomcat服务器以及Web应用,这是通过结合手工编辑XML文件和平台配置实现的,主要分为两部分:控制配置和管理配置。控制配置可以配置Tomcat 服务器以及Web应用;管理配置可以在不重启Tomcat服务器的情况下,方便地发布、启动、停止或卸载Web应用。

在Tomcat 6以前的版本中,分别通过控制平台和管理平台对Tomcat实施控制配置和管理配置,这两个平台都可以通过在浏览器地址栏中输入URL的方式进行登录。但由于Tomcat 6.0.14没有提供控制平台包,所以要通过修改conf子目录下的server.xml来进行控制配置,管理配置可以通过Tomcat自带的管理平台来实现,该平台位于Tomcat安装目录\server\webapps\manager下。

程序员突击——Tomcat 原理与Java Web 系统开发

·18· 1.3.4 Tomcat 的控制配置

在Tomcat 6.0.14中,进行控制配置的主要途径是修改conf 子目录下的文件server.xml ,主要配置内容包括3部分:Service 、Resource 和User Definition 。

其中Service 配置内容和1.1.3节中的内容相同,主要是通过配置文件server.xml 中的元素、元素、元素、元素、元素和元素来添加、删除或修改相应的组件,从而对Web 应用实施全方位的管理。

Resource 用于配置Tomcat 中的各种资源,主要包括以下4种:Data Source (数据源)、Mail Session (邮件会话)、Environment Entry (环境入口)和User Database (用户数据库)。

1.3.5 Tomcat 的管理配置

在浏览器地址栏中输入http://localhost:8080/manager/html ,或者在图1-13中单击左上方Administration 下的Tomcat Manager ,

均可进入Tomcat 管理平台的登录界面,如图1-17所示。

图1-17 管理平台登录界面

默认情况下,Tomcat 并没提供具有管理权限的账号,所以需要添加具有这种权限的账号。角色manager 具有这种权限,但在系统用户控制文件tomcat-users.xml 中并没有设置这两种角色和对应的用户,所以需要添加这种角色和用户,方法是打开tomcat-users.xml 文件,添加如下内容:

第1章 Tomcat 的安装与配置

·19·

上述代码先创建角色manager ,然后创建对应的用户manager ,tomcat-users.xml 文件修改后,必须重启Tomcat 服务器,文件修改才能生效。

在图1-17中,输入用户名manager 和密码manager ,单击

“确定”按钮即可进入Tomcat 管理平台,如图1-18和图1-19所示。

图1-18 Tomcat 管理平台1

图1-19 Tomcat 管理平台2

Tomcat 管理平台自上而下分为以下5部分:

·20·

程序员突击——Tomcat原理与Java Web系统开发

(1)Message

消息栏,表示Tomcat管理平台情况,其值为OK时表示正常工作。

(2)Manager

下面有4个链接选项,分别是List Applications(Web应用管理列表)、HTML Manager Help(如何管理基于HTML的Web应用的帮助信息)、Manager Help(如何管理其他Web 应用的帮助信息)和Server Status(Tomcat服务器状态),系统默认链接是第一个。

(3)Application

管理Tomcat服务器中的所有Web应用,每个Web应用都有5个属性,下面分别介绍其含义。

?Path:该Web应用的URL入口。

?Display Name:标记此Web应用的一个名称,供GUI工具使用,对应于web.xml 中的display-name属性。

?Running:此Web应用是否处于运行状态。

?Sessions:连接需要的Session数目。

?Commands:分为上下两行,上面一行提供若干命令列表,用于Tomcat服务器处于运行状态时管理这些Web应用,这些命令的功能如表1-4所示。

表1-4 应用管理命令

命令功能

Start 启动Web应用

Stop 停止Web应用

Reload 停止Web应用,重新加载Web应用各种组件,然后重新启动Web应用

Undeploy 卸载Web应用,并且删除\webapps目录下对应的文件

(4)Deploy

用来发布Web应用,有下述两种方式。

第一种方式是在Deploy directory or WAR file located on server下填写该Web应用的相关信息,如Web应用的URL入口、XML配置文件对应路径、WAR文件或者该Web应用相对于\webapps目录的文件路径,然后单击按钮,即可发布该Web应用,发布后在Application列表中即可看到该Web应用的信息。这种方式只能发布位于\webapps目录下的Web应用。

第二种方式是在WAR file to deploy下单击按钮,在弹出的文件对话框中选择需要发布的WAR文件,然后单击按钮,即可发布该Web应用,发布后在Application 列表中即可看到该Web应用的信息。这种方式可以发布位于任意目录下的Web应用。

其中,第二种方式实际上是把需要发布的WAR文件自动复制到\webapps目录下,所以上述两种方式发布的Web应用都可以通过在浏览器地址栏中输入http://localhost:8080/Web 进行访问。

(5)Server Information

显示Tomcat服务器的信息,如Tomcat版本号、JVM版本号、JVM发行商、操作系统

第1章Tomcat的安装与配置·21·

名称和版本等信息。

1.4 第一个Web应用

聊天室是常用的Web应用,在本节中将结合上述内容来设计一个无须数据库支持的简单聊天室。

1.4.1 需求分析

本聊天室面向普通大众,满足沟通、交流的基本需求,所以功能上应该少而精,而不要多而杂。由于没有数据库存储信息,所以不需保存用户名和密码,用户用昵称即可登录。聊天室采用多用户并发操作机制,聊天内容具有共享性,在公共聊天板上可以看到每个用户的聊天内容,由于没有数据库,所以不存储聊天内容。

基于上述分析,本聊天室具有以下功能。

?用户登录:进入聊天室的第一个步骤,用户输入昵称(可任意设定)即可进入聊天室。

?显示聊天内容:在公共聊天板上分别显示不同用户的聊天内容。

?输入聊天内容:用户在输入框输入并发出自己的聊天内容。

整个操作流程图如图1-20所示。

聊天流程

开始

用户登录

进入聊天室

聊天

是否退出

结束聊天

图1-20 聊天室流程图

相关主题
相关文档
最新文档