Tomcat部署

Tomcat下第一个webapp的部署

在描述如何组织源代码目录之前,检查Web应用程序的运行时组织非常有用。在Servlet API规范2.2版之前,服务器平台之间几乎没有一致性。但是,要求符合2.2(或更高版本)规范的服务器接受标准格式的 Web应用程序存档

Web应用程序被定义为标准布局中目录和文件的层次结构。可以以“未打包”形式(其中每个目录和文件分别存在于文件系统中)或以称为Web ARchive或WAR文件的“打包”形式来访问这种层次结构。前一种格式在开发期间更有用,而后一种格式在分发要安装的应用程序时使用

Web应用程序层次结构的顶级目录也是应用程序的 文档根。在这里,您将放置构成应用程序用户界面的HTML文件和JSP页面。当系统管理员将您的应用程序部署到特定服务器上时,他或她会为您的应用程序分配上下文路径,因此,如果系统管理员将您的应用程序分配给上下文路径 /catalog,则引用的请求URI 将从您的文档根目录/catalog/index.html检索index.html文件。

标准目录布局

为了便于以所需格式创建Web应用程序存档文件,可以将Web应用程序的“可执行”文件(即Tomcat在执行应用程序时实际使用的文件)安排在与WAR格式本身。为此,您将在应用程序的“文档根目录”目录中获得以下内容:

  • .html。 jsp-HTML和JSP页面以及应用程序的客户端浏览器必须可见的其他文件(例如JavaScript,样式表文件和图像)。在较大的应用程序中,您可以选择将这些文件划分为子目录层次结构,但是对于较小的应用程序,通常只为这些文件维护一个目录要简单得多。

  • /WEB-INF/web.xml:您的应用程序的Web应用程序部署描述符。这是一个XML文件,描述了组成应用程序的servlet和其他组件,以及您希望服务器为您强制执行的所有初始化参数和容器管理的安全性约束。

  • / WEB-INF / classes / -此目录包含您的应用程序所需的所有Java类文件(和相关资源),包括未合并到JAR文件中的servlet和非servlet类。如果您的类被组织为Java包,则必须在目录层次结构下将其反映出来 /WEB-INF/classes/。例如,一个名为的Java类 com.mycompany.mypackage.MyServlet 将需要存储在一个名为的文件中 /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class

  • / WEB-INF / lib / -此目录包含JAR文件,这些文件包含您的应用程序所需的Java类文件(和相关资源),例如第三方类库或JDBC驱动程序。

当您将应用程序安装到Tomcat(或任何其他2.2或更高版本的Servlet容器)中时,该WEB-INF/classes/ 目录中的类以及该目录中找到的JAR文件中的所有类对于 WEB-INF/lib/您的特定Web应用程序中的其他类都是可见的。因此,如果在这些位置之一中包含所有必需的库类(请确保检查许可证以获取对您使用的任何第三方库的再发行权),则将简化Web应用程序的安装-无需对系统进行任何调整类路径(或在服务器中安装全局库文件)将是必需的。

共享库文件

像大多数servlet容器一样,Tomcat还支持一种机制,可以一次安装库JAR文件(或解压缩的类),并使它们对所有已安装的Web应用程序可见(不必包含在Web应用程序本身中)。“类装入器方法”文档中介绍了有关Tomcat如何查找和共享此类的详细信息 。在Tomcat安装中,共享代码通常使用的位置是 $ CATALINA_HOME / lib。放置在此处的JAR文件对于Web应用程序和内部Tomcat代码均可见。这是放置应用程序或内部Tomcat使用(例如DataSourceRealm)所需的JDBC驱动程序的好地方。

web应用程序部署描述符

/WEB-INF/web.xml文件包含您的应用程序的Web应用程序部署描述符。就像文件名扩展名所暗示的那样,此文件是XML文档,定义了服务器需要了解的与应用程序有关的所有内容(上下文路径除外,该上下文路径是在部署应用程序时由系统管理员分配的),预计将提供开发工具来为您创建和编辑部署描述符。同时,为了提供一个起点,提供了一个基本的web.xml文件 。该文件包含描述每个包含元素目的的注释。

注释说明(DTD文档类型描述符)

Servlet规范包括用于Web应用程序部署描述符的文档类型描述符(DTD),并且Tomcat在处理应用程序的/WEB-INF/web.xml文件时会强制执行此处定义的规则 。特别是,你必须由DTD定义的顺序输入你的描述符元素(如<filter><servlet><servlet-mapping>由DTD定义的顺序。

具体的使用Tomcat进行部署

下面的描述使用变量名$ CATALINA_BASE来引用可解决大多数相对路径的基本目录。如果尚未通过设置CATALINA_BASE目录为多个实例配置Tomcat,则$ CATALINA_BASE将设置为$ CATALINA_HOME的值,该目录已将Tomcat安装到该目录中。*

JAR和WAR包的区别

war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的.
它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。

war包:是做好一个web应用后,通常是网站,打成包部署到容器中。
jar包:通常是开发时要引用通用类,打成包便于存放管理。
ear包:企业级应用,通常是EJB打成ear包。

所有的包都是用jar打的,只不过目标文件的扩展名不一样。
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 Web应用程序部署

部署是用于将Web应用程序(第三方WAR或您自己的自定义Web应用程序)安装到Tomcat服务器的过程的术语。

Web应用程序部署可以在Tomcat服务器中以多种方式完成。

  • 静态地 在启动Tomcat之前先设置Web应用程序
  • 动态地 通过直接操作已经部署的Web应用程序(依靠自动部署 功能)或通过使用Tomcat Manager Web应用程序远程

Tomcat管理器是一个可以交互使用(通过HTML GUI)或以编程方式(通过基于URL的API)来部署和管理Web应用程序的Web应用程序。

有多种方法可以执行依赖于Manager Web应用程序的部署。Apache Tomcat提供了用于Apache Ant构建工具的任务。 Apache Tomcat Maven插件 项目提供了与Apache Maven的集成。还有一个名为Client Deployer的工具,可以从命令行使用它,并提供其他功能,例如编译和验证Web应用程序以及将Web应用程序打包到Web应用程序资源(WAR)文件中。

安装

静态部署Web应用程序不需要安装,因为Tomcat是开箱即用的。尽管需要某些配置(如Tomcat Manager手册中所述),但使用Tomcat Manager进行部署功能也不需要进行任何安装 。但是,如果您想使用Tomcat Client Deployer(TCD),则需要进行安装。

TCD没有与Tomcat核心发行版一起打包,因此必须从“下载”区域单独下载。该下载通常标有 apache-tomcat-10.0.x-deployer

上下文

在谈论Web应用程序的部署时,需要理解上下文的概念 。上下文是Tomcat所谓的Web应用程序。

为了在Tomcat中配置上下文, 需要上下文描述符。上下文描述符只是一个XML文件,其中包含与Tomcat相关的Context配置,例如命名资源或会话管理器配置。在早期版本的Tomcat中,上下文描述符配置的内容通常存储在Tomcat的主要配置文件*server.xml中,*但是现在不建议这样做(尽管目前仍然可以使用)。

上下文描述符不仅帮助Tomcat知道如何配置上下文,而且其他工具(例如Tomcat Manager和TCD)经常使用这些上下文描述符来正确执行其角色。

上下文描述符的位置为:

  1. $ CATALINA_BASE / conf / [引擎名称] / [主机名] / [webappname] .xml
  2. $ CATALINA_BASE / webapps / [webappname] /META-INF/context.xml

(1)中的文件名为[webappname] .xml,但(2)中的文件命名为context.xml。如果未为上下文提供上下文描述符,则Tomcat使用默认值配置上下文。

部署方式

1.静态部署:在Tomcat启动时进行部署

如果您对使用Tomcat Manager或TCD不感兴趣,则需要将Web应用程序静态部署到Tomcat,然后再启动Tomcat。您将Web应用程序部署到此类型的部署的位置称为“ appBase每个主机指定的位置”。您可以将所谓的爆炸式Web应用程序(即未压缩的*Web应用程序)*复制到此位置,也可以将压缩的Web应用程序资源.WAR文件复制到该位置。

appBase仅在主机deployOnStartup属性为“ true”时,才会在Tomcat启动时部署 由主机(默认主机为“ localhost”)属性(默认appBase为“ $ CATALINA_BASE / webapps”)指定的位置中存在的Web应用程序。

在这种情况下,将在Tomcat启动时执行以下部署顺序:

  1. 任何上下文描述符都将首先部署。
  2. 然后将部署未由任何上下文描述符引用的爆炸性Web应用程序。如果他们在appBase中具有关联的.WAR文件,并且该文件比分解的Web应用程序新,则分解的目录将被删除,并且将从.WAR重新部署该Webapp。
  3. .WAR文件将被部署
2.动态部署:对正在运行的Tomcat服务器上进行部署

可以将Web应用程序部署到正在运行的Tomcat服务器。

如果HostautoDeploy属性为“ true”,则Host将尝试根据需要动态地部署和更新Web应用程序,例如,如果将新的.WAR放到了.WAR中appBase。为此,主机需要启用后台处理,这是默认配置。

autoDeploy 设置为“ true”,并且正在运行的Tomcat允许:

  • 部署.WAR文件复制到主机中appBase
  • 部署爆炸性Web应用程序,并将其复制到Host中appBase
  • 当提供新的.WAR时,重新部署已经从.WAR部署的Web应用程序。在这种情况下,将删除爆炸的Web应用程序,然后再次扩展.WAR。请注意,如果配置了主机,则不会以unpackWARs 设置为“ false”的属性爆炸.WAR ,在这种情况下,Web应用程序将简单地重新部署为压缩归档文件,则不会发生爆炸。
  • 如果/WEB-INF/web.xml文件(或定义为WatchedResource的任何其他资源)已更新,则重新加载Web应用程序。
  • 如果更新了从中部署Web应用程序的上下文描述符文件,则重新部署Web应用程序。
  • 如果更新了Web应用程序使用的全局或每个主机的上下文描述符文件,则重新部署从属Web应用程序。
  • 如果将上下文描述符文件(文件名与先前部署的Web应用程序的Context路径相对应)添加到该$CATALINA_BASE/conf/[enginename]/[hostname]/ 目录中,则重新部署该Web应用程序 。
  • 如果删除了Web应用程序的文档库(docBase),则将其取消部署。请注意,在Windows上,这假定启用了防锁定功能(请参阅上下文配置),否则无法删除正在运行的Web应用程序的资源。

请注意,也可以在加载程序中配置Web应用程序的重新加载,在这种情况下,将跟踪已加载的类以进行更改。

3.Tomcat Manager: 使用Tomcat管理器进行部署
4.TCD: 使用客户端部署程序包进行部署

可以使用Tomcat Client Deployer来实现Web应用程序的部署。这是一个软件包,可用于验证,编译,压缩为.WAR并将Web应用程序部署到生产或开发Tomcat服务器。应当注意,此功能使用Tomcat管理器,因此目标Tomcat服务器应正在运行。

假定用户将熟悉使用Apache TCD的Apache Ant。Apache Ant是一个脚本化的构建工具。TCD预先打包了一个构建脚本以供使用。只需要对Apache Ant有一定的了解(如本页面前面列出的安装,并且熟悉使用操作系统命令外壳程序和配置环境变量)。

TCD包括Ant任务,在部署之前用于JSP编译的Jasper页面编译器,以及验证Web应用程序上下文描述符的任务。验证程序任务(类 org.apache.catalina.ant.ValidatorTask)仅允许一个参数:展开的Web应用程序的基本路径。

TCD使用爆炸的Web应用程序作为输入(请参阅下面使用的属性列表)。通过部署程序以编程方式部署的Web应用程序可能在中包含Context Descriptor /META-INF/context.xml

TCD包含一个现成的Ant脚本,其目标如下:

  • compile(默认):编译和验证Web应用程序。这可以独立使用,不需要运行中的Tomcat服务器。编译后的应用程序将仅在关联的 Tomcat XYZ服务器版本上运行,并且不能保证可以在另一个Tomcat版本上运行,因为Jasper生成的代码取决于其运行时组件。还应注意,此目标还将自动编译位于/WEB-INF/classesWeb应用程序文件夹中的任何Java源文件 。
  • deploy:将Web应用程序(已编译或未编译)部署到Tomcat服务器。
  • undeploy:取消部署Web应用程序
  • start:启动Web应用程序
  • reload:重新加载Web应用程序
  • stop:停止Web应用程序

为了配置部署,请deployer.properties在TCD安装目录根目录中创建一个名为的文件。在此文件中,每行添加以下“名称=值”对:

此外,您将需要确保已为目标Tomcat Manager(TCD使用的目标用户)设置了用户,否则TCD将不会通过Tomcat Manager进行身份验证,并且部署将失败。为此,请参见“ Tomcat管理器”页面。

  • build:默认情况下,使用的构建文件夹为 ${build}/webapp/${path}${build},默认情况下,指向${basedir}/build)。compile目标执行结束后,Web应用程序.WAR将位于 ${build}/webapp/${path}.war
  • webapp:包含展开的Web应用程序的目录,将对其进行编译和验证。默认情况下,该文件夹为 myapp
  • path:默认情况下,Web应用程序的已部署上下文路径/myapp
  • url:指向正在运行的Tomcat服务器的Tomcat Manager Web应用程序的绝对URL,它将用于部署和取消部署Web应用程序。默认情况下,部署者将尝试访问在localhost上运行的Tomcat实例 http://localhost:8080/manager/text
  • username:Tomcat Manager用户名(用户应具有manager-script角色)
  • password:Tomcat管理器密码。

想要了解更多内容,欢迎访问我的博客呀!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值