当前位置: 首页 > 科技观察

什么是ApacheTomcat?原始的JavaServlet容器

时间:2023-03-12 22:07:37 科技观察

ApacheTomcat是一个历史悠久的开源JavaServlet容器,它实现了几个核心Java企业规范,即JavaServlets、JavaServerPages(JSP)和WebSocketsAPI。Tomcat是ApacheSoftwareFoundation项目,于1998年首次发布,仅比Java发布晚四年。Tomcat最初是JavaServletAPI和JSP规范的第一个参考实现。虽然Tomcat不再是这两种技术的参考实现,但Tomcat仍然是使用最广泛的Java服务器,拥有久经考验的核心引擎和良好的可扩展性。在这个简短的介绍中,您将了解为什么许多软件商店选择Tomcat来运行JavaWeb应用程序。您将获得Tomcat及其用法的概述,以及撰写本文时最新版本的安装说明。Tomcat是什么服务器?Java生态系统支持多种类型的应用程序服务器,所以让我们来消除它们的歧义,看看Tomcat适合的位置:servlet容器是JavaServlet规范的实现,主要用于托管Javaservlet。Web服务器是一种服务器,例如Apache,旨在为本地系统中的文件提供服务。JavaEnterpriseApplicationServer是JavaEE(现在的JakartaEE)规范的完全成熟的实现。本质上,Tomcat是一个Servlet和JSP容器。Javaservlet封装了代码和业务逻辑,并定义了在Java服务器中应如何处理请求和响应。JSP是一种服务器端视图渲染技术。作为开发人员,您编写servlet或JSP页面并让Tomcat处理路由。Tomcat还包含Coyote引擎,这是一个Web服务器。感谢Coyote,Tomcat可以扩展为包括各种Java企业规范和功能,包括JavaPersistenceAPI(JPA)。Tomcat还有一个名为TomEE的扩展版本,其中包含更多企业功能。我将在本文后面简要介绍TomEE。让我们从使用Tomcat托管servlet和JSP开始。下载并安装Tomcat作为软件界的老手,Tomcat的版本有很多。可以在Tomcat主页上找到有关版本差异的信息。通常,您可以选择最新的稳定版本。出于我们的目的,请下载最新版本的Tomcat,当前为Tomcat9。您可以选择将Tomcat下载为存档文件(.zip或tar.gz)或已安装的服务。最好的选择取决于您——当然,除非您不在Windows上运行,否则您将使用存档。我们将在本文中使用档案。Tomcat的Windows安装如果您运行的是Windows并想使用安装程序,只需下载.exe文件并运行它。Tomcat将自己安装为具有合理默认值的服务。然后它会通知您安装位置,您可以继续操作,就好像您已经在那里解压缩了存档一样。步骤1.命令行安装转到命令行并键入gunzipapache-tomcat-9.0.19.tar.gz,然后键入tar-xfapache-tomcat-9.0.19.tar。这将创建以下目录:/bin包含用于执行Tomcat的脚本。/webapps是您将部署应用程序的地方。/logs是Tomcat输出日志的地方。请注意,默认情况下/logs/catalina.out转到Tomcat的日志。您可以将此文件与特定于应用程序的日志文件一起使用来调试问题。/lib是Tomcat查找JAR的地方。此处将存储Tomcat未附带的其他包,例如JPA。/conf是Tomcat的配置XML,您可以在其中执行诸如为Tomcat添加用户和角色之类的操作。第2步:启动Tomcat如果您将Tomcat安装为服务,则它已经在运行。否则,继续并通过在命令行中键入./catalina.shstart来启动它。(键入不带参数的./catalina.sh以查看所有可用命令)。您现在应该能够在浏览器中导航到Tomcat的欢迎屏幕。在Tomcat中部署应用程序Tomcat的webapps目录是您部署应用程序的地方。您可以将.war文件放在那里,Tomcat将运行它。WAR文件是Web应用程序资源的标准包装:一个JAR文件,其中包含一些其他文件,这些文件告诉容器(在本例中为Tomcat)如何运行它。除了标准打包之外,还有其他三种方式可以在Tomcat中部署内容。展开式部署“展开式”Web应用程序是一种未压缩为WAR文件的应用程序,这意味着它仍然包含目录和文件中列出的所有元素。以这种方式部署的几个示例随解压缩的Tomcat存档一起提供,您可以在/webapps/examples目录中找到它们。扩展部署的优点是您可以在那里查看文件而不必担心压缩。如果您导航到http://localhost:8080/examples/,您将找到一个链接列表。该页面由Tomcat通过/webapps/examples/index.html文件呈现。Tomcat正在从文件系统提供HTML文件,这是充当Web服务器的TomcatCoyote引擎的一个实例。请随意浏览提供的示例,它们可以很好地概述Tomcat服务于servlet、JSP和WebSocket的功能。默认情况下,Tomcat还包括一个管理应用程序,它位于/manager路径下。除此之外,此应用程序还允许您从Web控制台启动、停止和重新部署应用程序。提供静态内容既可以提供来自文件系统的文件,也可以将它们从Tomcat转发到另一个HTTP服务器,例如Apache。另一种常见的设置是在Tomcat前面放置一个文件服务器(例如Apache或Nginx),然后将您的API请求转发给Tomcat。在这些情况下,mod_JK库用于配置Tomcat和Apache(甚至是IIS等其他Web服务器)进行通信。为了提高性能,主要是在交付静态内容方面,Tomcat还为Windows和Linux提供了本机包装器。这称为TomcatAPR,更多信息可在此处获得。这些对于典型用例来说不是必需的,但很容易理解。嵌入式Tomcat长期以来,Jetty是唯一能够作为嵌入式服务器运行的服务器。那已经改变了,现在Tomcat也可以嵌入式运行。使用嵌入式服务器的想法是,到目前为止,您没有拥有包含应用程序文件的服务器,而是拥有一个应用程序(即独立的Java应用程序),其主类在其代码库中从:调用服务器函数。总的来说,这提供了一种更简单、更便携的开发模型,并迅速成为标准。例如,SpringBoot使用以开发模式运行的嵌入式Tomcat实例。运行嵌入式服务器可以简化事情,因为您现在处理的是单个组件(应用程序),而不是应用程序和服务器部署。另一方面,Tomcat作为独立主机运行的设置仍然很常见。TomEE通过将这些库添加到Tomcat本身或应用程序依赖项,使使用更多标准JavaEE(或JakartaEE)功能与Tomcat成为可能。另一种选择是TomEE服务器。TomEE是相同的Tomcat引擎,具有额外的Java企业支持,包括流行的JPA和CDI(上下文和依赖注入)API。TomEE的规范基于JavaEEWeb配置文件,因此它为您提供的不仅仅是Tomcat,也不是像WildFly或Glassfish那样成熟的JavaEE应用程序服务器。高可用性和集群Tomcat支持高可用性和集群。本质上,高可用性是故障转移到服务器的另一个实例并重新创建会话的能力,就好像没有出现任何问题一样。集群是创建同一服务器的多个版本以处理大量流量的能力。结束语Tomcat积极开发,与时俱进,为部署Web应用程序提供了坚实可靠的平台。它作为许多PaaS系统的默认Java平台的持续流行和选择证明了它的持续成功。