Tomcat回顾

来源:互联网 发布:国内vpn代理软件 编辑:程序博客网 时间:2024/05/16 05:46

一、Tomcat背景

  自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。Tomcat与Apache的组合相当完美。
 

二、Tomcat目录

在此我们列举的是Tomcat6.x的目录结构
Tomcat6.0的目录结构则比5.5简化了很多 目录如下:
/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
/conf:存放Tomcat服务器的各种全局配置文件,其中包括server.xml(Tomcat的主要配置文件)、tomcat-users.xml和web.xml等配置文件
/lib:存放所需的所有jar文件(整合了原来tomcat5.5中的common/share/server三个目录下的所有jar)
/logs:存放Tomcat执行时的日志文件
/temp:存放Tomcat运行时所产生的临时文件
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录(原/server/webapps下的manager等应用也已转移至此)
/work:Tomcat将JSP生成的Servlet源文件和字节码文件放到这个目录下

Tomcat6.x与5.x在目录上最大的区别就是将所有的lib包直接置于 CATALINA_HOME/lib目录下。lib目录下存放的JAR文件可以被所有的Web应用程序所访问。

三、运行Tomcat

很简单,到Tomcat的安装目录,找到 startup.bat 文件,双击运行就好。

然后,在默认端口没有改的情况下,在浏览器中访问:“http://localhost:8080”,看到如下画面说明启动成功:


介绍另外一种启动方式,把Tomcat服务安装到Windows中,这样就可以用命令启动Tomcat了。
首先,来到Tomcat的安装目录,按住Shift不动右键单击“在此处打开命令行(和同事学的一招)”,然后输入:
service.bat install

这样会把Tomcat服务安装到Window。

我们在命令行继续输入
services.msc
打开服务表,可以看到注册成功的服务。


我们可以在图形界面启动Tomcat或者在命令行,使用
net start Tomcat6
来启动服务。
不过,笔者在启动时,碰到了些小麻烦,说是“发生系统错误5”,报错如下:

百度一番,得知可能是启动命令行的权限问题,换用admin启用命令行,问题解决!

然后,就可以正常使用Tomcat了。

四、Tomcat启动过程

我们可以打开 “startup.bat”,可以看到,首先它会判断CATALINA_HOME环境变量是否为空,如果为空,会将当前目录设为CATALINA_HOME的值。然后判断“%CATALINA_HOME%\bin\catalina.bat”是否存在。其实,我们执行的是catalina.bat start 命令。
附: startup.bat
if "%OS%" == "Windows_NT" setlocalrem ---------------------------------------------------------------------------rem Start script for the CATALINA Serverrem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not definedset "CURRENT_DIR=%cd%"if not "%CATALINA_HOME%" == "" goto gotHomeset "CATALINA_HOME=%CURRENT_DIR%"if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomecd ..set "CATALINA_HOME=%cd%"cd "%CURRENT_DIR%":gotHomeif exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"rem Check that target executable existsif exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end
直接执行“catalina.bat”,会打印出如下信息:

注:我们可以通过"catalina.bat run"命令来启动Tomcat,这样在启动失败报错时,窗口不会马上关闭,错误信息会在当前命令窗口中打印出来。如,我们在jdk1.6的情况下,启动 tomcat8,会有如下报错。但是直接点击“startup.bat”,窗口一闪就没有,到底是因为什么启动失败,我们就很难观察了。

五、Tomcat管理程序
Tomcat提供了一个管理程序:manager,用于管理部署到Tomcat服务器中的web应用程序。使用之前,我们需要先配置一个角色和用户名、密码。到conf目录下找到tomcat-users.xml文件,添加如下代码:
<tomcat-users><role rolename="manager-gui"/><user username="tomcat" password="tomcat" roles="manager"/></tomcat-users>
打开首页,点击“Tomcat Manager”超链接

管理界面:


注意:manager这个角色,现在tomcat不推荐使用,可以用manager-gui代替。

在这个管理页面中,你可以部署、启动、停止、重新加载、卸载Web应用程序。

六、Tomcat体系结构、server.xml

整体层次结构,如图:
其中,context标签,是在Host标签下层的。
Host:表示一个虚拟主机,一个引擎可以包含多个Host。
Context:表示了一个Web应用程序,运行在特定的虚拟主机中。每个Context都有一个唯一的路径。
官方说明,可以在%CATALINA_HOME%/webapps/docs/architecture/overview.html 中查看。
在Tomcat中,提供了各组件的接口以及其实现类,如果你要替换Tomcat中的某个组件,只需要根据该组件的接口或者类说明,重写该组件,并进行配置即可。这些接口和类,都在%CATALINA_HOME%/lib/catalina.jar文件中。

七、其他

1、Tomcat可以同时运行多个Web程序吗?
答:当然可以。部署多个Web程序完全是可以的,在管理列表我们看到,默认Tomcat已经部署了“/”、“/docs”、“/manager”等应用程序。要发布自己的应用,只需要按照上面提到的部署方法部署就好!
1 0