Tomcat基本配置

时间:2024.4.21

Tomcat基本配置(1)

(一):简介

tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为20xx年度最具创新的java产品(Most Innovative Java Product),同时它又是sun公司官方推荐的servlet和jsp容器(具体可以见http: ///products/jsp/tomcat/),因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。

(二):配置

运行tomcat需要设置JAVA_HOME变量

set JAVA_HOME=c:/jdk (win98,在msdos方式下使用,或者放入autoexec.bat中)

export JAVA_HOME=/usr/local/jdk (linux下使用,放到/etc/bashrc或者/etc/profile中)

(三):运行

设置完毕后就可以运行tomcat服务器了,进入tomcat的bin目录,win98下用startup启动tomcat,linux下用startup.sh,相应的关闭tomcat的命令为shutdown和shutdown.sh。

启动后可以在浏览器中输入http://localhost:8080/测试,由于tomcat本身具有web服务器的功能,因此我们不必安装apache,当然其也可以与apache集成到一起,下面会介绍。

下面你可以测试其自带的jsp和servlet示例。

应用

(一):目录结构

tomcat的目录结构如下:

目录名 简介

bin 存放启动和关闭tomcat脚本

conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml work 存放jsp编译后产生的class文件

webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录 logs 存放日志文件

lib/japser/common 这三个目录主要存放tomcat所需的jar文件

(二):server.xml配置简介

下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档

元素名 属性 解释

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.20

01-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方式记录的值更多

注意:1:经过我测试,我设置Context 的path="",reloadable=true,然后放一个WAR文件到webapps目录,结果tomcat不能检测出此文件(重起tomcat可以),而把此文件解压,则tomcat会自动检测出这个新的应用程序。如果不能自动检测WAR文件,我们可以利用下面管理中讲的方法来部署应用程序。

2:默认的server.xml中,Realm元素只设置了一个className属性,但此文件中也包含几个通过JDBC连接到数据库进行验证的示例 (被注释掉了),通过Realm元素我们可以实现容器安全管理(Container Managed Security)。

3:还有一些元素我们没有介绍,如Parameter,loader,你可以通过tomcat的文档获取这些元素的信息。

管理

1:配置

在进行具体的管理之前,我们先给tomcat添加一个用户,使这个用户有权限来进行管理。

打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:

注意:这一行的最后部分一定是/>,tomcat的文档掉了/符号,如果没有/符号的话,tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个

错误的详细信息。

然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。

2:应用程序列表

在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:

OK - Listed applications for virtual host localhost

/ex:running:1

/examples:running:1

/webdav:running:0

/tomcat-docs:running:0

/manager:running:0

/:running:0

面的信息分别为应用程序的路径,当前状态(running 或者stopped),与这个程序相连的session数。

3:重新装载应用程序

在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:

OK - Reloaded application at context path /examples

表示example应用程序装载成功,如果我们将server.xml的Context元素的reloadable属性设为true(见上面表格),则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。

4:显示session信息

在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:

OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes

5:启动和关闭应用程序

在浏览器中输入http://localhost:8080/manager/start?path=/examples和http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。

6:部署及撤销部署

WAR有两种组织方式,一种是按一定的目录结构组织文件,一种是一个后缀为WAR的压缩包,因此它的部署方式也有两种:

(1):在浏览器中输入:http://localhost:8080/manager/install?path=/examples&war=file:/c:\examples

就会将按目录结构组织的WAR部署

(2):如果输入:http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:\examples.war!/

就会将按压缩包组织的WAR部署,注意此url后半部分一定要有!/号。

部署后就可以用 http://localhost:8080/examples访问了。

在浏览器中输入:http://localhost:8080/manager/remove?path=/examples 就会撤销刚才部署的应用程序。

与apache集成

虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来。

我们以linux系统为例介绍.

从apache网站下载apache1.3.22源代码版本,然后使用如下命令配置安装apache:

mkdir /usr/local/apache

tar zxvf apache.1.32.tar.gz

cd apache.1.32

./configure --prefix=/usr/local/apache --enable-module=so

make

make install

注意configure命令指定目标安装目录,并且加入DSO(Dynamic Shared Object)支持,注意一定不要忘了这一个选项。

然后下载webapp模块,将解压后mod_webapp.so文件放入apache的libexec目录,编辑apache的conf目录下的httpd.conf,在这个文件的最后加入下面

三行:

LoadModule webapp_module libexec/mod_webapp.so

WebAppConnection warpConnection warp localhost:8008

WebAppDeploy examples warpConnection /examples/

第一行是加入webapp模块,如果编译apache时不增加DSO支持,则无法使用LoadModule指令,第二行指定tomcat与apache的连接,第三行指定部署那个应用,这两个指令使用格式如下:

WebAppConnection [connection name] [provider] [host:port]

WebAppDeploy [application name] [connection name] [url path]

其中connection name指定连接名,provider只能是warp,port端口与你的tomcat的配置文件server.xml最后几行指定的要保持一致。文件如下:

port="8008" minProcessors="5" maxProcessors="75"

enableLookups="true"

acceptCount="10" debug="0"/>

******

application name与你在tomcat中部署的应用名一致,url path指定访问这个应用的url。例如上面的例子可以通过http://localhost/examples/来访问tomcat中的examples应用。

中文问题

一般jsp的乱码问题可以通过在jsp中加入来解决,至于servlet的乱码在可以使用servlet2.3中提供的 HttpServeletRequest.setCharacterEncoding函数。更详细的中文问题请见JSP/Servlet 中的汉字编码问题。

综述

tomcat作为一个servlet(jsp也被编译为servlet执行)容器,其应用前景是非常好的,如果与jboss结合起来,则可以实现sun的 j2ee规范(用jboss作ejb服务器)。jboss的官方网站也提供集成了tomcat3.2*的jboss以供下载。另外一个开源的应用服务器 (enhydra) 也是基于tomcat的,其提供了更友好的管理界面,

部署应用程序也更简单,功能也更强大。

Tomcat基本配置(2)

Tomcat是在SUN的JSWDK的基础上发展起来的另一个优秀的JSP服务器,它不但支持 Servlet,而且还提供了Web服务器的功能。作为一个开放源码的软件,Tomcat有着自己独特的优势,可以和目前大部分的主流服务器一起工作,而且有着相当高的运行效率。

通过本章,读者将会看到:

· Tomcat的基本概念

· 如何让Tomcat和IIS一起工作

· 如何让Tomcat和Apache一起工作

· 如何设定JSP的虚拟目录

· 如何将Tomcat设为Windows服务运行

Jakarta-Tomcat概貌

综述:Tomcat是一个带有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=foo/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.sh

win32:binstartup

关闭:

unix:bin/shutdown.sh

win32:binshutdown

Tomcat目录结构

假设读者已将Tomcat解压,这时将得到下列目录结构:

目录名

描述

bin 包含启动/关闭脚本。

conf 包含不同的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件web.xml。

doc 包含各种Tomcat文档。

lib 包含Tomcat使用的jar文件。unix平台此目录下的任何文件都被加到Tomcat的classpath中。

logs Tomcat摆放日志文件的地方。

src ServletAPI源文件。先别高兴,这里只有些必须在Servlet容器内实现的空接口和抽象类。

webapps 包含web项目示例。

work Tomcat自动生成,放置Tomcat运行时的临时文件(如编译后的JSP文件),如果在Tomcat运行时删除此目录.JSP页面将不能运行。

classes 你可以创建此目录来添加一些附加的类到类路径中,任何你加到此目录中的类都可在Tomcat的类路径中找到自身。

Tomcat的脚本

Tomcat是一个Java程序,因此在设置好几个环境变量后即可用命令行的方式运行。然而设置Tomcat使用的每个环境变量和如下的命令行参数乏味且容易出错。因此,Tomcat开发组提供了一些脚本使启动和关闭Tomcat变得非常轻松。

注意:这些脚本仅仅是个便利的方法去启动和关闭Tomcat。你可修改他们来定制CLASSPATH,环境变量如PATH、LD_LIBRARY_PATH等等,只要是生成一个正确的命令行即可。

这些脚本是什么呢?下面列出对一般用户最重要的脚本。

Tomcat:主脚本。设置合适的环境变量,包括CLASSPATH、TOMCAT_HOME以及JAVA_HOME和用适合的命令行参数启动Tomcat 。

startup :在后台启动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版的tomcat.bat与Unix版的几乎一致。尤其在它不推测TOMCAT_HOME和JAVA_HOME的值,并且不将所有的jar文件放入类路径中。

Tomcat的配置文件

这一部分将讲述如何使用配置文件server.xml和web.xml。我们不会包含web.xml的内部机制,这些内部机制深入到了Servlet API的细节,因此,我们将讨论涵盖这两个配置文件在Tomcat关系环境中的用法。

Tomcat的配置基于两个配置文件:

1.server.xml - Tomcat的全局配置文件,完成两个目标:

(1)提供Tomcat组件的初始配置

(2)说明Tomcat的结构、含义,使得Tomcat通过实例化组件完成启动及构建自身。

结构、含义的说明是通过元素来实现的,下面将描述这些元素。

Server:server.xml文件中最重要的元素。Server定义了一个Tomcat服务器。一般读者不用对它担心太多。Server元素能包含Logger和ContextManager元素类型。

Logger:此元素定义一个Logger对象,每个Logger都有一个名字去标识,也有一个纪录Logger的输出和冗余级别(描述此日志级别) 和包含日志文件的路

径,通常有servlet的Logger(ServletContext.log()处),JSP和Tomcat运行时的 Logger。

ContextManager:它说明了一套ContextInterceptor、RequestInterceptor、Context和它们的Connectors的配置及结构。ContextManager有几个随同提供的特性:

a.用来纪录调试信息的调试级别

b.webapps/、conf/、logs/和所有已定义的环境的基本位置。用来使Tomcat可以在TOMCAT_HOME外的其他目录启动。

c.工作目录的名字

ContextInterceptor&RequestInterceptor:这些侦听器(interceptors)侦听具体发生在 ContextManager中的事件,例如,ContextInterceptor侦听Tomcat的启动及终止事件, RequestInterceptor监视在它服务过程中用户请求需要通过的不同阶段。Tomcat的管理员不必知道太多关于侦听器的知识;另外,开发者应该知道这是如何在Tomcat中实现一个"全局"型的操作(例如安全性及每个请求日志) 。

Connector:表示一个到用户的联接,不管是通过web服务器或直接到用户浏览器(在一个独立配置中)。Connector负责管理Tomcat的工作线程和读/写连接到不同用户的端口的请求/响应。Connector的配置包含如下信息:

a.句柄类

b.句柄监听的TCP/IP端口

c.句柄服务器端口的TCP/IP的backlog

Context:每个Context提供一个指向你放置你Web项目的Tomcat的下属目录。每个Context包含如下配置:

a.Context放置的路径,可以是与ContextManager主目录相关的路径 b.纪录调试信息的调试级别

c.可重载的标志。开发Servlet时,重载更改后的Servlet,这是一个非常便利的特性

2.web.xml--在Tomcat中配置不同的关系环境

有一个和Tomcat有关的小"特性"与web.xml有关。Tomcat可以让用户通过将缺省的web.xml放入conf目录中来定义所有关系环境的web.xml的缺省值。建立一个新的关系环境时,Tomcat使用缺省的web.xml文件作为基本设置和应用项目特定的web.xml(放在应用项目的WEB-INF/web.xml文件)来覆盖这些缺省值。

更多相关推荐:
Tomcat的安装与配置和Tomcat端口的配置

前沿1如果之前安装了Oreacla在使用tomcat是会出现8080端口被占用的情况发生解决的方法就是对tomcat的端口进行配置安装tomcat注意两个系统环境变量的配置JAVAHOMECATALINAHOM...

Tomcat 部署网站 去掉端口号和项目名称

一在一个项目结束的时候往往根据需要直接映射到一个IP地址上此时就需要去除端口和项目名了在访问的时候下面根据具体的例子提供一种实现方法1在进入TOMCATHOME创建文件夹将其命名为webdb此处为webdb根据...

一个tomcat部署多个项目并通过不同的端口访问

一个tomcat部署多个项目并通过不同的端口访问第一步修改TOMCATHOMEconfserverxml文件复制Service节点去掉ltConnectorportquot8009quot这个节点新增Servi...

在myEclipse中配置tomcat6.0服务器,解决8080端口占用问题

在myEclipse65blue中配置tomcat60服务器解决8080端口占用问题安装完myEclipse和tomcat60不配置直接myEclipse启动tomcat60服务器会出现8080同时端口占用问题...

基于IP和端口号配置tomcat虚拟主机

配置虚拟主机有两种办法1在系统这个目录下面可以配置我们访问局域网内其它计算不用写IP的地方前面的IP可以写成局域网内的主机IP到时候访问就可以这样的了2在tomcat添加多个虚拟主机一个host就是一个虚拟主机...

Tomcat去除端口号和项目名

在一个项目结束的时候往往根据需要直接映射到一个IP地址上此时就需要去除端口和项目名了在访问的时候下面根据具体的例子提供一种实现方法1在进入TOMCATHOME创建文件夹将其命名为webdb此处为webdb根据需...

Tomcat 修改默认端口 以及Tomcat设置虚拟目录

Tomcat修改默认端口以及Tomcat设置虚拟目录个人操作所获经验例虚拟目录改为Djsproot1建立Djsproot将tomcat下的webappsROOT目录下WEBINF文件复制到Djsproot中里面...

Tomcat6设置虚拟目录及server.xml配置详解

Tomcat6设置虚拟目录及serverxml配置详解Tomcat是流行的JSP服务器正如ASP中需要使用IIS一样在编辑的JSp页面部署时需要一个服务器Tomcat正是常用的首选服务器网上下载的程序或者从别处...

Tomcat配置详解

tomcatserverxml配置详解一标签元素ltServergtltListenergtltGlobaNamingResourcesgtltGlobaNamingResourcesltServicegtlt...

tomcat配置及部署

随着java的流行其在web上的应用也越来越广tomcat作为一个开源的servlet容器应用前景越来越广本文将向你讲述tomcat的一些知识简介tomcat是jakarta项目中的一个重要的子项目其被Java...

Tomcat详细配置

Tomcat详细配置安装Tomcat之前要先安装JDK可从上下载最新版本的JDKTomcat可从ApacheJakartaProject站点sitebinindexcgi上下载本书使用的Tomcat版本是557...

在Tomcat和Eclipse进行远程调试的配置

在做远程调试时在windows系统和非windows系统下的配置Tomcat中会有所差别具体如下第一步配置tomcat一在windows系统中打开CATALINEHOMEbin下的文件catalinabat加入...

tomcat配置端口号(40篇)