嵌入式与非嵌入式 Java 服务器

2022-09-01 17:25:16

我正在开发一个Java项目,并且一直在使用Tomcat服务器进行本地测试。然而,我即将推到Heroku,我发现了一篇文章,建议使用“嵌入式”雄猫。

我环顾四周,看看在Java服务器的上下文中“嵌入式”到底是什么意思,但似乎Google上的每个人都已经理解了“嵌入式”的含义。我没有。部署“常规”Tomcat服务器和“嵌入式”服务器有什么区别?


答案 1

“嵌入式”意味着您的程序随服务器一起提供,而不是将Web应用程序部署到外部服务器。

使用嵌入式服务器,您的应用程序与所选服务器打包在一起,并负责服务器启动和管理。

从用户的角度来看,区别在于:

  • 具有嵌入式服务器的应用程序看起来像一个普通的java程序。你只需启动它,就是这样。
  • 常规Web应用程序通常是需要部署到某些服务器的存档war

嵌入服务器对于测试目的非常有用,您可以在测试期间随意启动或停止服务器。


答案 2

传统上,要托管 Java Web 应用程序,您需要在服务器上安装一个 Tomcat 实例,然后将所有 WAR 文件推送到该服务器上。也许你把几个Tomcat实例聚集成在一起,但想法是一样的。有一个Tomcat服务器,你所有的Java Web应用程序都部署到它上面。

传统与嵌入式雄猫

在微服务领域,情况略有不同。我们不是一个Tomcat服务器托管许多Web应用程序,而是使用微服务,采用一个Web应用程序,将该Web应用程序部署到一个tomcat服务器,然后将其全部压缩到一个zip,jar或war文件中,该文件可通过Java命令执行。因此,现在我们有一个可执行文件,其中包含运行Web应用程序所需的所有内容,包括Tomcat服务器。

基于容器的配送

某些产品在嵌入式 servlet 引擎中提供其整个产品。你可以在一个可执行的WAR文件中得到Jenkins,尽管我相信它们嵌入了Jetty,而不是Tomcat,但这是同样的想法。但是,与分发jar/war相比,人们所做的不太可能是将整个事情打包在一个docker容器中,并将其全部部署到Kubernetes或Heruku或其他任何东西中。

这就是嵌入式tomcat服务器背后的想法。

Maven and Embedded Tomcat

创建嵌入式tomcat服务器的最简单方法之一是使用Apache Maven。下面是一个 Maven 构建示例,它不仅构建了一个 Web 应用程序,还下载了 tomcat 并将整个内容打包到可执行 JAR 中:

Embedded Tomcat with Maven


推荐