分享
 
 
 

Tomcat环境的建立

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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 任何压缩文件,从http://jakarta.apche.org/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装入IIS

IIS,即Internet Information Server,是微软公司提供的一种功能强大的Web服务器,它对ASP有着很好的支持,这一点相信很多读者都已经知道。现在,JSP已经流行起来,如何才能让IIS支持该技术呢?读者将会从本节得到答案。

一、安装环境Windows 2000、IIS 5.0

Tomcat 3.1下载地址

http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/

isapi_redirect.dll下载地址

http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/win32/i386/

放到{TOMCATHOME}\bin\iis\i386\isapi_redirect.dll

二、先要保证Tomcat可以正确执行

三、将下面的begin和end之间的Jakarta.reg文件装入机器,我的Tomcat装在c:\\jakarta-tomcat,你可根据自己的环境修改Jakarta.reg文件

Jakarta.reg:

---begin---

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]

"extension_uri"="/jakarta/isapi_redirect.dll"

"log_file"="c:\\jakarta-tomcat\\logs\\isapi.log"

"log_level"="debug"

"worker_file"="c:\\jakarta-tomcat\\conf\\workers.properties"

"worker_mount_file"="c:\\jakarta-tomcat\\conf\\uriworkermap.properties"

---end---

四、按照上文配置IIS,以作者的经验安装好isapi_redirect.dll后,需要重新启动机器(重启IIS不好使),实在不行的话再装一次。

五、启动tomcat,然后在IE中键入http://baryon/examples/,看一下效果如何,没有用8080端口也可以用jsp和 servlet了。注意不启动tomcat,光有IIS是不行的。再注意http://baryon/examples/最后的"/"一定要有,否则会找不到的。

如何在windows 9x环境下配置Apache + Tomcat?

如果读者使用的是windows 9x操作系统,那么读了下文后,建立自己的JSP运行环境,将变得十分简单。

系统配置如下:

windows 98(NT主要是环境变量的设法不同,和下面程序的设置无关)

jdk1_2_2.exe

apache_1_3_9_win32.exe

ApacheModuleJServ.dll

tomcat.zip(3.1)

一、安装

1.安装JDK1.2.2,并将jdk1.2.2的目录加入到环境变量PATH中(Autoexec.bat);

2.安装apache_1_3_9_win32.exe;

3.将ApacheModuleJServ.dll拷到Apache所在目录的modules子目录中;

4.安装Tomcat 3.1(解压并拷到某个目录中);

此时所需部件都已经安装完毕,以下是配置过程。

二、配置

1.首先编辑Apache的conf子目录下的http.conf文件使其能正常运行并配合自己的机器配置

2.设置以下环境变量(可以放在autoexec.bat中):

SET TOMCAT_HOME=C:\PROGRA~1\Tomcat

(注:此时如果有Windows风格目录,一定要写成DOS下目录格式,不然容易出问题)

SET JAVA_HOME=C:\PROGRA~1\jdk1.2.2

3.打开TOMCAT的conf子目录下的tomcat.conf文件,将以下行前的注释去掉:

LoadModule jserv_module modules/ApacheModuleJServ.dll

再将对应LINUX的类似一行用注释屏蔽掉。 /

4、打开apache的httpd文件,在最后加入一行:

include c:/progra~1/tomcat/conf/tomcat.conf

三、启动与测试:

1.首先启动apache,此时如果正确,应当显示为:

Apache/1.3.9 (Win32) tomcat/1.0 running...

2.进入到tomcat的执行目录(bin)。

注一:此目录如果为windows风格目录,一定要用windows目录表示法进入,如:progra~1 一定要写为program files

注二:通常要求执行命令的运行环境变量大小为4096

3.用tomcat.bat start或tomcat.bat run启动tomcat,此时应当可以看到正确输出的classpath,说明Tomcat启动成功!

4.在浏览器中输入http://localhost/examples/,此时应当可以看到server返回的三个目录列表。点击其中JSP的就可以看到示例了。

只要用官方站下载的程序,照上述几步应当能正确启动JSP环境,接下来的问题就是如何加入context以便映射到自己的工作目录,请读者参考1.2.5节。

如何在Windows NT 4.0下安装Apache + Servlet + JSP

环境配置一向是比较烦的一件工作!本节的目的就是要轻松为读者搞定NT下安装和配置SERVLET和JSP的执行环境。

首先,到Java.apache.org去下载一个tomcat3.1或tomcat3.2。下载的是一个ZIP文件。将它解压到一个目录下面。比如 c:\下面。在c盘下面就会出现一个jakatar-tomcat的目录。读者可以将这个目录改个名字,假设改为tomcat。现在打开c:\ tomcat\conf目录下的server.xml文件。找到ContextManager标签,将可以看到:

<Connector className="org.apache.tomcat.service.SimpleTcpConnector">

<Parameter name="handler" value="org.apache.tomcat.service.http. HttpConnectionHandler"/>

<Parameter name="port" value="80"/>

</Connector>

因为tomcat可以作为一个独立的服务器使用,所以有它自己的端口号。在这里可以修改它缺省的端口号,而该号在本机未被占用。假设改成9000。

现在到c:\tomcat\bin目录下面,读者可以看到一个startup.bat的批处理文件。在执行这个文件前,如果你用的是JDK1.2.1或 JDK1.2.2的话,请将JDK_HOME\LIB\tools.jar这个文件放到classpath中去。(注:设置classpath的方法:右键单击"我的电脑"->选择属性->环境,如果还没有classpath这个环境变量,就添加一个,如果有了就在它的基础上修改,加上JDK_HOME\LIB\tools.jar)。

现在可以执行startup.bat这个文件了。(如果在执行时出现out of environment space的提示,就将DOS窗口的缓冲区大小开得大些。具体作法:在DOS 窗口的菜单中的属性-> 内存 -> 总共和初始环境改大点)

在执行完后,startup.bat会在另一个窗口打开start tomcat。打开浏览器,在地址栏中输入:http://localhost:9000/

然后回车。这时应该看到了一只jakatar-tomcat。现在在地址栏键入: http://localhost:9000/examples/servlet/,回车,应该看到一个servlet的index的页面,点击其中的例子servlet看看吧。现在在地址栏键入http://localhost:9000/examples/jsp/,回车,读者也会看到一个类似刚才 servlet index页面的一个页面,点击jsp的例子看看吧。如果在点击了一个JSP的例子后出现500的错误,如果没有别的错误信息,在IE5的工具菜单-> Internet选项->高级,把显示友好的HTTP错误的选项去掉,然后IE就会报出具体的出错信息。原因是你没有将tools.jar放到 classpath中去。

现在要将tomcat连接到apache上去了。首先到www.apache.org上去下载一个 Apache Web Server。再到Java.apache.org上去下载一个Jserv。先安装Apache Web Server(比如安装在c:\apache目录下面)。安装完后需要修改c:\apache\conf\httpd.conf文件,找到 Servername,修改为自己喜欢的名字,找到port,修改为未被占用的端口。再安装Jserv(比如安装在c:\Jserv目录下面)。安装 Jserv需要指定JVM所在的目录,你可以指定JDK_HOME\BIN目录。需要指定JSDK所在目录。(实际上它要找的是servlet.jar这个文件,你可以指定tomcat\lib\servlet.jar试一试)

这时候实际上Apache已经支持Servlet了,但还不支持JSP。所以还需修改c:\apache\conf\httpd.conf文件。用文本编辑器打开httpd.conf,在文件最后加上: Include "Tomcat_Home\conf\tomcat-apache.conf"。(请注意,tomcat-apache.conf这个文件是在 tomcat运行后由tomcat自动产生的。所以要先开tomcat,再打开Apache)

现在先启动tomcat(c:\ tomcat\bin\startup.bat),当出现了另一个窗口后,启动Apache(c:\apache\bin\apache.exe或者通过开始菜单->程序->Apache Web Server->Start Apache启动)。如果此时通过后者启动Apache,有一个DOS窗口一闪后就消失了,说明对Apache+JServ+tomcat的配置还有问题,应该通过第一种方法启动Apache,此时能在屏幕上看到具体的出错信息。

如果出错信息是:apj* : can't be specified more than once per host。(*号代表一些字符串,比如ApJServLogLevel等等),就要修改c:\Jserv\conf\jserv.conf文件,将 apj*的相关行注释掉就可以,可能需要注释5-6行。如果Apache也正常启动的话,现在你可以在地址栏键入http://localhost: apache_port/examples/servlet/ 来通过Apache+tomcat调试Servlet,这里apache_port是Apache的端口号,可以通过修改c:\apache\conf\ httpd.conf这个文件修改端口号;在地址栏键入http://localhost:apache_port/examples/jsp/ 来调试JSP。

怎样设置JSP的虚拟目录?

如果读者细心的话,会发现前面测试用的都是examples\jsp目录。现在就讲一下怎么创建自己的工作目录。

首先在d:\tomcat\webapps(假定安装目录为d:\tomcat)目录下面创建myweb目录,接着在myweb目录下面创建jsp目录和classes目录。然后用文本编辑器打开d:\tomcat\conf目录下面的server.xml,查找到<ContextManager>标签,并在该标签的结束标签</ContextManager>前面加上:

<Context path="/myweb" docBase="webapps/myweb" debug="0" reloadable="true" >

</Context>

其中path的值是虚拟目录,docbase的值是你的硬盘的的目录的绝对路径。

然后将d:\tomcat\webapps\myweb\classes目录放到classpath这个环境变量中去。用文本编辑器编辑下面这个文件。

<html>

<body>

<%

for(int i=1;i<3;i++){

out.println("<h" + i + ">Hello World</h" + i + ">");

}

%>

</body>

</html>

存为c:\tomcat\webapps\myweb\jsp\helloworld.jsp。

在地址栏键入:http://localhost:apache_port/testdir/jsp/helloworld.jsp 看看结果吧。

再测试一下Servlet。用文本编辑器编辑下面这个文件。

import Java.io.*;

import Java.text.*;

import Java.util.*;

import Javax.servlet.*;

import Javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void service(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException

{

response.setContentType("text/html");

ServletOutputStream out = response.getOutputStream();

out.println("<html>");

out.println("<head>");

String title = "Hello World";

out.println("<title>" + title + "</title>");

out.println("</head>");

out.println("<body bgcolor="white">");

out.println("<body>");

out.println("<h1>" + title + "</h1>");

out.println("</body>");

out.println("</html>");

}

}

存为c:\tomcat\webapps\myweb\classes\HelloWorld.Java,用Javac编译后,在地址栏键入 http://localhost:apache_port/testdir/servlet/HelloWorld 看看结果吧。

如何设定Tomcat作为Windows的服务而启动?

上面我们已经谈到,要使用Tomcat作为Web服务时,必须先手工启动Tomcat,这显然不是一个适合Tomcat作为Web服务的方法,在 Linux下可以通过修改启动脚本自动启动Tomcat,在Windows下则可以设定Tomcat作为Windows的服务而启动。

我们可以借助工具,使Tomcat作为Windows NT/2000的一个服务:

一、下载工具,这里作为例子的是gservany--将NT下的一般应用程序作为服务运行的工具。下载网址为http: //www.advok.com/gservany.html。将zip文件解压缩,将gservany.exe放入winnt\system32下

二、在NT/2000的command下输入:gservany -i tomcat "C:\Jakarta-tomcat\bin" "startup.bat" "C:\Jakarta-tomcat\bin" "shutdown.bat"。其中C:\Jakarta-tomcat为Tomcat的安装目录。

三、启动service管理器,会看到tomcat service被装上。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有