第一章 Tomcat概述一、Tomcat简介TOMCAT是APACHE JAKARTA软件组织的一个子项目,TOMCAT是一个JSP/SERVLET容器,它是在SUN公司的JSWDK(JA V A SERVER WEB DEVELOPMENT KIT)基础上发展起来的一个JSP和SERVLET规范的标准实现,使用TOMCAT可以体验JSP和SERVLET的最新规范。
经过多年的发展,TOMCAT不仅是JSP和SERVLET规范的标准实现,而且具备了很多商业JA V A SERVLET容器的特性,并被一些企业用于商业用途。
1、TomcatTomcat在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行Serlvet/JSP 的Web容器,不过Tomcat也扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等等。
Tomcat 是一种具有JSP环境的Servlet容器。
Servlet容器是代替用户管理和调用 Servlet的运行时外壳。
1.1 SERVLET容器负责处理客户请求。
当客户请求来到时,SERVLET容器获取请求,然后调用某个SERVLET,并把SERVLET的执行结果返回给客户。
当客户请求某个资源时,SERVLET容器使用SERVLETREQUEST对象把客户的请求信息封装起来,然后调用JA V A SERVLET API中定义的SERVLET的一些生命周期方法,完成SERVLET 的执行,接着把SERVLET执行的要返回给客户的结果封装到SERVLETRESPONSE对象中,最后SERVLET容器把客户的请求发送给客户,完成为客户的一次服务过程。
1.2 TOMCAT的工作模式1.2.1 独立的SERVLET容器TOMCAT的默认工作模式,作为独立的SERVLET容器,是内置在WEB服务器中的一部分,是指使用基于JA V A的WEB服务器的情形。
其他两种方式是TOMCA T与其他服务器集成的方式:1.2.2 进程内的SERVLET容器SERVLET容器作为WEB服务器的插件和JA V A容器的实现。
WEB服务器的插件在内部地址空间打开一个JVM(JA V A VIRTUAL MACHINE)使JA V A容器得以在内部运行。
如有某个需要调用SERVLET的请求,插件将取得对此请求的控制并将它传递(使用JNI)给JA V A容器。
进程内的容器对于多线程、单进程的服务器非常适合,并且提供了很好的运行速度,只是伸缩性有所不足。
注意:JNI是JA V A NATIVE INTERFACE的缩写,是JA V A本地调用接口,通过JNI,JA V A 程序可以和其他语言编写的本地程序进行通信。
1.2.3 进程外的SERVLET容器SERVLET容器运行于WEB服务器之外的地址空间,并且作为WEB服务器的插件和JVM 使用IPC(如TCP/IP)进行通信。
进程外容器的反应时间不如进程内的容器,但有较好的伸缩性、稳定性等性能。
IPC INTERPROCESS COMMUNICATION(进程间通信)的简写,它是实现进程间通信的一种技术。
1.3 TOMCAT的组织结构TOMCAT是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的给件是CA TALINA SERVLET容器,其他的组件按照一定的格式要求配置在这个顶层容器中。
TOMCAT的各个组件是<TOMCA T_HOME>\conf\server.xml文件中配置的,TOMCAT服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解TOMCAT的各个组件是如何组织的。
<Server> 顶层元素,代表一个服务器<Service> 顶层元素,是Connector的集合,只有一个Engine<Connectior/> 连接器类元素,代表通信接口<Engine> 容器类元素,为特定的Service组件处理所有客户请求,可包含多个Host<Host> 为特定的虚拟主机处理所有客户请求<Context> 为特定的WEB应用处理所有客户请求</Context></Host></Engine></Service></Server>TOMCAT中真正处理客户请求与生成响应的三个组件是Engine 、Host、Context2、Tomcat5.0包含三个主要的部分包括:* Catalina - 一个符合Servlet API规范2.3的Servlet Container* Jasper - 一个符合JSP规范1.2的JSP编译器和运行环境* Webapps - Tomcat中包含的一些例子和用于测试的web例程,以及相关文档。
3、应用服务器(如WebLogic)与Tomcat有何区别。
应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet。
而Tomcat则功能没有那么强大,它不提供EJB等支持。
但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。
4、Tomcat 目录的结构(1)Tomcat的安装其实对于完全由Java写成的Tomcat,Win32版本和Linux版本没有多大区别,比如Linux版本,在Solaris下也没有问题。
这里,主要以Win32版本作为示例。
注意:在安装使用Tomcat之前,先安装JDK,最好是Sun的JDK 1 .2 以上版。
(2)Tomcat的目录结构首先,下载jakarta-tomcat.zip包,解压缩到一个目录下,如:“c:\tomcat”。
这时,会得到如下的Tomcat的目录结构:- - - jakarta - tomcat| - - - bin Tomcat执行脚本目录| - - - Common 放置一些通用类(如JDBC的驱动程序等)| - - - conf Tomcat配置文件| - - - doc Tomcat文档| - - - lib Tomcat运行需要的库文件(JARS)| - - - logs Tomcat执行时的LOG文件| - - - src Tomcat的源代码| - - - webapps Tomcat的主要Web发布目录(存放我们自己的JSP,SERVLET,类)| - - - work Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里。
(3)、各个目录下所应该存放的文件:按照Tomcat的规范,Tomcat的Web应用程序应该由如下目录组成页面内容等文件的存放位置:*.html, *.jsp等可以有许多目录层次,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要的可见部分。
除了HTML文件、JSP文件外,还有js(JavaScript)文件和css(样式表)文件以及其他多媒体文件等。
⏹Web-INF/web.xml这是一个Web应用程序的描述文件。
这个文件是一个XML文件,描述了Servlet和这个Web应用程序的其他组件信息,此外还包括一些初始化信息和安全约束等等。
⏹Web-INF/classes/这个目录及其下的子目录应该包括这个Web应用程序的所有JavaBean及Servlet等编译好的Java类文件(*.class)文件,以及没有被压缩打入JAR包的其他class文件和相关资源。
注意,在这个目录下的Java类应该按照其所属的包层次组织目录(即如果该*.class文件具有包的定义,则该*.class文件应该放在.\WEB-INF\classes\包名下)。
⏹通常Web-INF/classes/这个目录下的类文件也可以打包成JAR文件,并可以放到WEB-INF下的lib目录下。
如将 classes目录下的各个*.class文件打包成WebMis.jar文件(jar cvf WebMis.jar *.*)注意:(1)WEB-INF目录中包含应用软件所使用的资源,但是WEB-INF却不在公共文档根目录之中。
在这个目录中所包含的文件都不能被客户机所访问。
(2)类目录中(在WEB-INF下)包含运行Web应用程序时所需的Servlets,Beans等类。
(3)lib目录(在WEB-INF下)包含有Java archive files (JARs),例如标签库或者Servlets,Beans 等类的*.jar文件。
(4)如果一个类出现在JAR文件中同时也出现在类的目录中,类加载器会加载位于类目录中的那一个。
⏹common/lib/ 这个目录下包含了所有压缩到JAR文件中的类文件和相关文件。
比如:第三方提供的Java库文件、JDBC驱动程序等。
✓其中msbase.jar、mssqlserver.jar、msutil.jar文件为SqlServer2000的JDBC 驱动程序✓其中servlet-api.jar和jsp-api.jar为Servlet和JSP的API所在的包二、Tomcat的环境配置1、启动Tomcat在Bin目录下,有一个名为startup.bat的脚本文件,执行这个脚本文件,就可以启动Tomcat 服务器,不过,在启动服务器之前,还需要进行一些设置。
●首先,设置系统的环境变量。
✓TOMCAT_HOME(或者:CATALINA_HOME)值:d:\jakarta-tomcat-5.0.16 (用TOMCAT_HOME指示Tomcat根目录,下面以Tomcat5.0.16版为例)。
✓JAVA_HOME值:c:\j2sdk1.4.0(用JAVA_HOME指示jdk1.4的安装目录)。
注意:对于设置Windows的系统环境变量,可以打开控制面板中的“系统”程序;在“系统环境变量”中增加两个环境变量项目JAVA_HOME(最好为大写)指向JDK的目录和TOMCAT_HOME(最好为大写)指向所安装的tomcat的目录。
2、启动和关闭Tomcat服务器(1)启动Tomcat服务器:执行在Bin目录下的名为startup.bat的脚本文件可以启动Tomcat 服务器现在可以运行TOMCAT并作为一个独立的Servlet容器。
(2)测试Tomcat的服务器启动与否:可以在浏览器中输入http://127.0.0.1:8080/index.jsp,是否出现如下内容。
(3)启动本站点的JSP页面:在Tomcat中的JSP文件和JavaBean程序的存放位置✓JSP文件放在“Webapps\站点名称”的目录下✓自定义的JavaBean程序*.java文件(可以不需要它)及*.class类文件存放在“Webapps\站点名称\ WEB-INF\classes\”目录下因此,将*.jsp文件拷贝到“TOMCAT_HOME\Webapps\站点名称”目录下,然后输入其URL地址(4)关闭Tomcat服务器:执行在Bin目录下的名为shutdown.bat的脚本文件可以终止Tomcat 服务器。