我正在开发一个Java项目,并且一直在使用Tomcat服务器进行本地测试。但是我准备推进Heroku,我发现an article建议使用“嵌入式”Tomcat。
我环顾四周看看在Java服务器环境中究竟“嵌入”的含义,但似乎Google上的每个人都已经理解“嵌入式”的含义。我不。部署“常规”Tomcat服务器和“嵌入式”Tomcat服务器有什么区别?
答案 0 :(得分:12)
"嵌入式"意味着您在其中编程服务器而不是部署到外部服务器的Web应用程序。
使用嵌入式服务器,您的应用程序与选择的服务器打包在一起,负责服务器的启动和管理。
从用户的角度来看,区别在于:
war
存档,需要部署到某个服务器嵌入服务器对于测试目的非常有用,您可以在测试期间随意启动或停止服务器。
答案 1 :(得分:1)
从here开始,当你将tomcat“嵌入”你的应用程序时。也就是说,您负责启动和停止tomcat。这与正常的容器操作相反,但您可能会发现它对快速部署和测试很有用。
答案 2 :(得分:1)
传统上,要托管Java Web应用程序,需要在服务器上安装一个Tomcat实例,然后将所有WAR文件推送到该服务器上。也许您将几个Tomcat实例群集在一起,但是想法是相同的。有一台Tomcat服务器,所有Java Web应用程序均已部署到该服务器。
传统vs嵌入式Tomcat
在微服务领域,情况有所不同。我们不是使用一个托管微服务的Tomcat服务器,而是一个Web应用程序,而是将一个Web应用程序部署到一台tomcat服务器上,然后将其全部压缩为一个zip,jar或war文件,该文件可通过Java命令。因此,现在我们有了一个可执行文件,其中包含运行Web应用程序所需的一切,包括Tomcat服务器。
基于容器的分发
某些产品在embedded servlet engine中运送其整个产品。您可以在单个可执行WAR文件中获得Jenkins,尽管我相信它们嵌入了Jetty,而不是Tomcat,但这是相同的想法。但是,与分发jar / war相比,人们做事的可能性较小,是将整件事打包在docker容器中,然后全部部署到Kubernetes或Heruku或其他任何东西上。
这就是embedded tomcat server背后的想法。
Maven和嵌入式Tomcat
创建嵌入式tomcat服务器的最简单方法之一是使用Apache Maven。这是一个Maven构建示例,它不仅可以构建Web应用程序,还可以下载tomcat并将其打包在可执行的JAR中: