3

我想知道这是否是一种有点尴尬的思维方式,但我在互联网上找不到任何暗示我的想法。也许我只是没有正确表达我的问题,但无论如何,这就是我想做的:

我有一个用 java 编写的复杂应用程序,带有 spring 和quartz 以及大量的依赖项。该应用程序在 apache tomcat servlet 容器中运行。现在我知道了,我可以创建一个 war 文件并将其部署到生产服务器机器上(在我们的内部 IT 已经在该机器上安装和配置了 tomcat 之后),但我想这样做有点不同。

我希望 maven 创建一个预打包的 tomcat 应用程序服务器,其中包含所有依赖项和配置设置以及我的应用程序。实际上,在生产系统上需要做的就是,将包(或 zip 或 tar.gz 或任何需要的东西)复制到服务器,将其解压到我或他们选择的目录中,然后启动这个本地孤立的雄猫。它只会运行我的应用程序(无论如何都会在机器上造成足够的负载),我什至可以到目前为止部署第二个变体,例如在第一个旁边的目录中为不同的客户。两者都不会相互干扰,即使它们使用具有不同依赖关系的不同版本。

有可能这样做吗?这是一种可取的方法还是我在这里完全错误的轨道?

我认为这种方法的一个好处是(尽管在两个或多个不同安装之间存在不兼容的依赖项或设置),我可以将整个包交给我们的管理人员,他们可以简单地将其部署到服务器而无需安装后需要在tomcat中配置任何东西等等。

有什么提示???

4

1 回答 1

2

创建一个 Maven 项目作为父项目(类型 pom)。将你的 webapp 包含为一个模块项目(类型 war)。创建另一个模块项目,可能是“myapp-standalone”(类型 jar)并包含Embeddable Tomcat作为依赖项。编写一个启动类来启动内部 Tomcat(参见可执行 jar / überjar)。构建应用程序时,将创建的 war 文件复制到 jar中,复制到 Tomcats webapp 目录中。

您的启动器类需要确保当前 Tomcat 的端口尚未使用。

于 2014-10-09T06:48:58.197 回答