定义:
Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,是目前比较流行的Web应用服务器。
基本简介
tomcat图册Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
版本简介
版本对照表:
Servlet/JSP Spec Apache Tomcat version
———————————————————————
2.5/2.1 6.0.14
2.4/2.0 5.5.25
2.3/1.2 4.1.36
2.2/1.1 3.3.2
容器概述
Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从其官方网站上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。
这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
程序部署
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你 在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外 Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态 Html的能力就不如Apache.可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和Tomcat的配置文件即可。
Tomcat 提供Realm支持。Realm类似于Unix里面的group.在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的 资源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供 三种Realm,1:JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。2:JNDIRealm,用户信 息存在基于LDAP的服务器里,通过JNDI获取用户信息。3:MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm.通过Realm可以方便地对访问某个应用的客户进行验证。
在Tomcat4中,你还可以利用Servlet2.3提供的事件监听器功能,来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL集 成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。说到这里要介绍一下通常所说的应用服务器(如 WebLogic)与Tomcat有何区别。应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet.而 Tomcat则功能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的 全部功能。既然应用服务器具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,的很多中小应用不需要采用EJB等技术,Jsp和 Servlet已经足够,这时如果用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足的需求,这种情况下自然会选择Tomcat。
基 于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包 成WAR即可。这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make。你需要写一个 build.xml文件,然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,只需在xml中写很少的东西就可以将其 编译并打包成WAR。在很多应用服务器的发布中都包含了Ant.另外,在Jsp1.2中,可以利用标签库实现Java代码与Html文件的分离,使Jsp的维护更方便。
Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起来开发基于Xml的应用,与OpenJMS集成起来开发JMS应用,除了提到的这几种,可以与Tomcat集成的软件还有很多。
安装方法
一、准备工作
在开始安装之前,先准备J2SDK和TOMCAT两个软件,如果已经安装了J2SDK,就只需TOMCAT即可。
使用的软件如下:
J2SDK v1.4.2_04 - http://java.sun.com/j2se/1.4.2/download.html
TOMCAT v5.0.28 - http://apache.linuxforum.net/dist/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.exe
二、安装J2SDK
安装很简单,只需双击下载的文件,选择安装在d:j2sdk1.4.2_04目录下,设置环境变量,方法如下:
右击“我的电脑”==》属性==》高级==》环境变量==》新建
变量名:JAVA_HOME
变量值:d:j2sdk1.4.2_04
三、安装TOMCAT
运行jakarta-tomcat-5.0.28.exe 按照提示安装,这里选择了Service,就是作为Windows服务来运行。
如果要改变安装路径,可以在这个步骤操作,偶这里选择安装在D:Tomcat 5.0
在这里设置TOMCAT使用的端口以及WEB管理界面用户名和密码,请确保该端口未被其他程序占用
选择J2SDK的安装路径,安装程序会自动搜索,如果没有正确显示,则可以手工修改,偶这里改为d:j2sdk1.4.2_04
接下来就开始拷贝文件了,成功安装后,程序会提示启动tomcat并查看readme文档。Tomcat正常启动后会在系统栏加载图标。
在图标上右键鼠标可以看到一些设置项目
点击Configure或者双击图标可看到如下显示,选择Startup type为automatic自动启动,这样每次开机后就会自动运行TOMCAT。另外也可在这个界面点击start或stop按钮来控制tomcat的运行。
四、测试
至此安装与配置都已完成,打开浏览器输入:http://localhost:8080即可看到TOMCAT的相关信息
五、备注
由于偶将TOMCAT作为service方式安装,所以CATALINA_HOME环境变量也没设过,如果读者不是按照这种方式请设置一个系统环境变量,设置方法同J2SDK。
变量名:CATALINA_HOME
变量值:d:Tomcat 5.0
另外可再增加一个环境变量
变量名:CLASSPATH
变
量
值:%JAVA_HOME%libdt.jar;%JAVA_HOME%libtool.jar;%JAVA_HOME%libtools.jar;%CATALINA_HOME%commonlibservlet-
api.jar;%CATALINA_HOME%commonlibjsp-api.jar
也是因为service安装的原因,在执行一些程序的时候会出现如下错误信息:
Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK
错
误信息是没有设置过JAVA_HOME环境变量,读者也可能碰到过这个问题,明明设置过这个环境变量,在服务里启动就会出错,但是在命令行下输入
D:Tomcat 5.0binstartup.bat启动却能运行,在服务里启动没有读取JAVA_HOME这个环境变量,而是在配置里定义这个环境变量的,于是偶在Java Options里加入了一句:-Djava.home=d:j2sdk1.4.2_04,再次启动TOMCAT就OK了
未来前景
分析公司Forrester Research的分析师这样评价Tomcat:“Tomcat可能是排在Apache Web 服务器和MySQL 数据库之后使用最多的开源产品。”BZ最新的调查研究则为此提供了有力的证据:Apache Tomcat是Java社区最常用的应用服务器??64%的Java开发者选择使用Tomcat。
Tomcat之所以大受欢迎原因主要有以下五点:
1、Tomcat是Apache的核心项目之一,也被 SUN 视作 Servlet/JSP 容器的一个重要参考实现而加以支持。因此 SUN 最新的Servlet/JSP规范,往往能够很快地在Tomcat的新版本中得到体现;
2、Tomcat是一个小巧精致的web应用服务器,配置、安装、运行、部署web应用都很简单,这让用户能够很快地上手使用;
3、开源软件的生命力,往往与其社区的状况有紧密的联系。在一个健康、活跃的社区,用户的疑问通常能够及时地解决,用户的反馈往往能够得到有效地处理,这样会吸引更多的用户加入到社区中来;反过来,不断扩大的用户群,也会促进社区的发展。Tomcat所拥有的优秀社区,对开发者而言,无论用什么标准来评价,都是充满吸引力的;
4、编写良好的文档,是开发者在开发中最好的帮手之一。Apache在开源社区中,无疑是撰写文档方面的佼佼者;
5、因为开源和免费的特性,使得用户可以*无障碍地下载、安装、使用Tomcat。这也是 Tomcat 能够被广泛使用的重要原因之一。
Tomcat最初是作为Servlet/JSP 容器的参考实现而进行设计开发的,在性能方面,并没有做过多的考量。经过几年的时间,Apache 发现 Servlet/JSP 容器并非只是 J2EE 环境的一部分而已。大量 web 应用并不需要 J2EE 这样的庞然大物,完全可以将 Tomcat 作为一个单独的 web 应用服务器来使用。
这实际也正是Tomcat受欢迎的另一原因所在很多开发者不需要如EJBs、JMS、分布式事务处理等J2EE组件。Rod Johnson在 他的《J2EE Development without EJB》一书中,指出了 J2EE 的许多不足之处。比如说,传统 J2EE(Java EE 5之前的 J2EE)中的 Entity EJB 是不怎么招人喜欢的。在Java EE 5中,过时的Entity EJB 组件被淘汰掉,数据持久化的工作,交给了深受 Hibernate 此类 ORM 工具影响的 JPA 来完成。分布式对象在大多数情况下,也是不合时宜的。
Martin Fowler 在《企业应用架构模式》中 分布式对象设计的第一原则就是不要分布你的对象。他给出的建议是将所有的组件部署到集群中的每一个节点中去。因而对于大部分 web 应用,Tomcat 应用服务器就能满足需求。通过诸如 Spring-Struts-Hibernate 这样的组合,可以快速而灵活地开发出能够满足复杂业务需求的 web 系统来。
在开发实践中除了Tomcat贺炜还使用过Resin,就二者的性能方面,Resin 2.x 的性能比同时期的 Tomcat 要好不少。但是 Tomcat 自设计实现了全新的 Catalina 引擎之后,在性能方面的问题便持续得到改善。而 Resin 在步入 3.x 版本后,划分成免费的 Open Source 版本和收费的 Pro 版本。有相当多的测试表明,Resin 3.x OS 的性能,与 Tomcat 5/6 相比要低得多;在配置方面,同 Resin 相比,Tomcat 还是显得稍微繁琐一点。对于中国的开发者而言,为了避免系统中出现乱码,往往还需要对 Tomcat 进行一些额外的配置才可以。而 Resin 在这一方面表现得很好,在绝大多数情况下,基本上不用做任何配置就能正常处理中文而不会出现乱码的问题。
在 Resin 3.x Pro 中,提供了诸如缓存、集群等 高级特性,倘若 Tomcat 在这方面有所加强,对于开发者而言无疑是非常美好的一件事情。Tomcat未来的趋势, Tomcat 无疑是使用最为广泛的 web 应用服务器之一,完全有理由相信这样的情况至少还会持续数年。但是天边已经出现两朵小小的、令人不安的乌云。
Ruby on Rails 所展现的开发方式与它所产生的高生产率, 给予 Java 开发者们的震撼很大。如果Java社区不能及时有效地改进web应用开发的方式,那么包括 Tomcat 在内的众多 Java 社区都会受到 RoR 不小的冲击。可能正如 Bruce Tate 所预言的那样,Java 在未来将更加着重于解决更复杂的事情,而普通web应用开发领域,则会逐步让位给像RoR这样高度灵活快速的技术。
来源:百度百科