WAR文件的Java 9模块化也是如此吗?

mal*_*c4k 22 java servlets java-9

Java EE 7应用程序服务器,特别是Servlet 3.1容器应该允许我们部署包含Web应用程序的WAR文件.WAR文件本质上是一个带有部署描述符(web.xml)和其他几个元素的JAR .

另一方面,Java 9引入了模块化JAR文件的概念,即带有模块descriptor(module-info.class)的JAR,它根据项目Jigsaw制作模块.

那么,WAR文件是否也包含模块描述符并制作"模块化WAR文件"?

是否已有应用程序服务器能够接受"模块化WAR文件"的部署?

一般来说,Java 9模块化方面的servlet容器和WAR文件的未来是什么?

Tom*_*rar 14

目前,Java EE和java 9(jigsaw)模块之间没有链接.未来的Java EE版本可能会引入有关如何与jigsaw模块交互的规范定义行为.

此时,所有应用服务器在JDK9上运行时都以"类路径模式"运行,这实际上意味着它们不使用拼图.

在大多数情况下,向war部署引入module-info只会导致部署问题,因为JDK可能会尝试以与应用服务器的其他部分不同的方式加载它.或者它甚至无法发挥作用,因为大多数应用服务器都有用于加载jar和类的自定义逻辑.

今天的一些应用服务器已经实现了某种模块化,如OSGi(GlassFish,Liberty)或jboss-modules(Wildfly).但此时拼图仍然有一些限制,能够在其上运行这样的模块化系统.

简而言之,直到EE规范(可能是9+)被更新以描述EE部署应如何在启用jigsaw的运行时上运行,对于此类部署的行为方式没有"官方"方式.在此之前,每个应用服务器都可以为它实现一些自定义支持,但它不会是标准的.