我认为JEE容器对于微服务环境来说太重了(速度慢,内存更大,维护成本更高等)。但是,有人告诉我EAP 7非常快且轻量级,可以用于开发微服务。在决定EAP 7与Tomcat 8用于docker /微服务时,您有什么建议?成本和速度将是考虑因素。
您还可以考虑使用TomEE。他们提供了与Tomcat集成的Java EE堆栈。
另一个选择,正如@Federico所推荐的那样,请考虑使用WildFly Swarm。然后,您可以真正开始自定义Java EE平台的哪些部分。并且您的部署模型正在使用JAR文件。
至于使用Docker打包,它们都提供基本镜像,您需要将应用程序捆绑在其中。以下是使用微服务Docker镜像的一些重要考虑因素:
作为个人说明,我比较熟悉Java EE堆栈而不是Tomcat / Spring,并且WildFly仍然是我最喜欢的应用服务器。
目前,我们通常将应用程序及其依赖项(JDK、库、AS)一起打包到Docker中 - 或者我们正在朝这个方向发展。因此,努力捆绑恰好所需的数量是一个合乎逻辑的选择。但是,需要AS功能的需求仍然存在着。基于标准和共同努力开发通用功能仍然是一个好主意。只是不再将其作为一个大包分发,可能会使大多数API处于非活动状态。这个努力有很多名称,例如微型容器、超级jar创作者...
有些Java EE服务器如此轻巧,以至于使用其他任何东西都是可疑的。 * Spring Boot不基于Java EE,并且在入门指南中的默认配置中内部使用Tomcat。
关键点是,您的Java EE应用程序应作为独立的Java EE应用程序开发。将其包装成“刚好足够”的功能委托给这些微型解决方案。这至少是我个人的看法,这是正确的方法。这样,您将保留与完整AS和微型解决方案的兼容性。超级JAR文件,包含所有依赖项,可以在构建过程期间或之后创建。
WildFly Swarm或Payara Micro能够“扫描”应用程序,仅运行所需的服务。对于真实世界的应用程序,在生产环境中的内存占用可以低至100 MB - 对于真实世界的应用程序而言,这可能是您想要的。如果需要Spring,Spring Boot也可以做类似的事情。然而,根据我的经验,与现代Java EE相比,Spring Boot更加笨重和占用内存,因为它显然包含了Spring,所以如果您在内存消耗方面寻求轻量级,请尝试Java EE,特别是WildFly Swarm(或纯WildFly)和Payara Micro。它们是我最喜欢的应用服务器,可以非常小。我会说,WildFly Swarm更容易入手,Payara Micro需要更多的阅读,但提供有趣的功能。两者都可以作为包装器 - 在构建阶段之后,您只需使用它们来包装当前项目,无需更改任何内容。Payara Micro甚至提供Docker镜像供使用!正如您所看到的,Java EE已经成熟并准备进入Docker领域 :)
其中一个非常好的可靠资源是Adam Bien,例如在他的Java EE微服务/纳米服务视频中。看一下。