Apache Tomcat是否要在每个托管应用程序中一次安装?

时间:2019-02-23 07:45:20

标签: java tomcat

我试图了解Apache Tomcat遵循的模型,而文档显然对我来说没有意义。

据我了解,Tomcat是用于托管各种服务的服务器-因此非常通用。我正在尝试了解如何托管此应用程序,并且其主要部署方法似乎是作为Tomcat托管的Web服务-该应用程序称为Camunda(位于github上)。在浏览了Camunda的文档之后,我的Tomcat目录中绝对充满了与Camunda相关的jar,配置文件等。文档说,只需将所有内容放入Tomcat lib文件夹,conf文件夹等。

我对其他“平台” /“服务”风格的宿主应用程序的大部分经验是,应用程序本身(在本例中为Tomcat)在其自己的目录中保持不变。通过配置文件等,它知道如何托管需要托管的任何内容。

就Tomcat而言,似乎习惯上是用一堆用于托管内容的库来“污染” Tomcat目录?

这就是为什么我将标题命名为“是Tomcat是指每个应用程序一个安装”,因为出于所有意图和目的,一旦在Tomcat中托管某些内容,该目录就会变得与某种东西耦合在一起,以至于Tomcat目录就是某种东西。

这正常吗?只是想在文档中用其他术语来说明一下,因为文档对我来说似乎不太清楚。

这里是我正在遵循并引用的安装过程的链接:https://docs.camunda.org/manual/latest/installation/full/tomcat/manual/

1 个答案:

答案 0 :(得分:1)

自从我使用Tomcat已经有一段时间了,但它不仅不是每个应用程序一个安装,也不是每个虚拟主机一个安装。

Tomcat是(另外)一个 servlet容器。 Servlet的目录布局等已在Java Servlet Specification v2.2中进行了标准化。您可以下载最新的servlet规范here

  

文档说只将所有内容放入Tomcat lib文件夹,conf文件夹等中。

希望他们正在谈论.war文件或类似文件中的内容,或共享位置中的共享库。您可以将共享库放置在可以跨应用程序(甚至虚拟主机)重用的位置,当磁盘空间更昂贵时,这可能很有用,但是如今,我假设大多数人将应用程序的库放在{应用程序的/WEB-INF/lib文件中的{1}}目录。

This page讨论.war文件(基本上是具有特定结构的.war)的“目录”布局。

确实,通常将.jar文件扩展到Tomcat安装目录的子目录中,但是正如the answer在注释中链接的Dan_Maff所示,您可以修改{{ 1}}文件,使其在其他地方显示。

您可以安装名为Manager的网络应用程序,该应用程序可以通过.war文件帮助安装,激活,停用和管理网络应用程序。 (还有一个Host Manager用于管理虚拟主机。)

所有这些,如果您愿意,您肯定可以在每个Tomcat安装中执行一个应用程序。您需要在它前面使用反向代理(Apache,Nginx等),以便可以将相同的端口(例如80)用于各种应用程序的外部URL,并且需要分配每个Tomcat安装自己的内部端口,以便与反向代理进行对话。