Java 9 模块化也适用于 WAR 文件吗?
Is Java 9 modularity for WAR files as well?
Java EE 7 应用程序服务器,特别是 Servlet 3.1 容器应该允许我们部署包含 Web 应用程序的 WAR 文件。 WAR 文件本质上是一个带有部署描述符 (web.xml
) 和其他几个元素的 JAR。
另一方面,Java 9 引入了模块化 JAR 文件 的概念,即带有模块描述符 (module-info.class
) 的 JAR,它根据 Jigsaw 项目制作模块。
那么,WAR 文件是否也可以包含模块描述符并生成 "modular WAR file"?
是否已经有能够接受 "modular WAR file" 部署的应用程序服务器?
一般来说,servlet 容器和 WAR 文件在 Java 9 模块化方面的未来是什么?
那么,WAR 文件是否也可以包含模块描述符并生成 "modular WAR file"
是的,可以。因为它现在基本上可以是 Modular JAR file 和 web.xml
.
这样的部署描述符
一般来说,servlet 容器和 WAR 文件在 Java9 模块化方面的未来是什么?
从模块系统的Dynamic configuration方面来说,
For the Java EE Platform, in particular, the goal is to enable a
future modular war-file standard in which the components in a war file
can be developer modules.
是否已经有能够接受 "modular WAR file" 部署的应用程序服务器?
虽然我目前不知道有任何这样的现有工具或服务器,但是 create Modular Jar 的功能已经添加到 JMOD
和 JAR
工具中,它们提供了未来的观点应用服务器和模块系统的集成。
目前 Java EE 和 java 9(jigsaw) 模块之间没有链接。
未来 Java EE 版本可能会引入关于如何与拼图模块交互的规范定义行为。
此时 运行 在 "classpath mode" 中的所有应用程序服务器 运行 在 JDK9 上运行,这实际上意味着它们不使用拼图。
在大多数情况下,将模块信息引入您的 war 部署只会导致部署问题,因为 JDK 可能会尝试以不同于应用服务器其他部分的方式加载它。或者它甚至不会有所作为,因为大多数应用程序服务器都有用于加载 jar 和 类.
的自定义逻辑
如今一些应用服务器已经实现了某种模块化,例如 OSGi(GlassFish、Liberty)或 jboss-modules(Wildfly)
但是此时jigsaw仍然有一些局限性能够运行这样的模块化系统在它之上。
所以简而言之,直到有更新的 EE 规范(可能是 9+)来描述 EE 部署应该如何 运行 在启用拼图的情况下 运行时间没有 "official"这种部署应该如何表现的方式。
在此之前,每个应用程序服务器都可以为其实现一些自定义支持,但它不会是标准的。
Java EE 7 应用程序服务器,特别是 Servlet 3.1 容器应该允许我们部署包含 Web 应用程序的 WAR 文件。 WAR 文件本质上是一个带有部署描述符 (web.xml
) 和其他几个元素的 JAR。
另一方面,Java 9 引入了模块化 JAR 文件 的概念,即带有模块描述符 (module-info.class
) 的 JAR,它根据 Jigsaw 项目制作模块。
那么,WAR 文件是否也可以包含模块描述符并生成 "modular WAR file"?
是否已经有能够接受 "modular WAR file" 部署的应用程序服务器?
一般来说,servlet 容器和 WAR 文件在 Java 9 模块化方面的未来是什么?
那么,WAR 文件是否也可以包含模块描述符并生成 "modular WAR file"
是的,可以。因为它现在基本上可以是 Modular JAR file 和 web.xml
.
一般来说,servlet 容器和 WAR 文件在 Java9 模块化方面的未来是什么?
从模块系统的Dynamic configuration方面来说,
For the Java EE Platform, in particular, the goal is to enable a future modular war-file standard in which the components in a war file can be developer modules.
是否已经有能够接受 "modular WAR file" 部署的应用程序服务器?
虽然我目前不知道有任何这样的现有工具或服务器,但是 create Modular Jar 的功能已经添加到 JMOD
和 JAR
工具中,它们提供了未来的观点应用服务器和模块系统的集成。
目前 Java EE 和 java 9(jigsaw) 模块之间没有链接。 未来 Java EE 版本可能会引入关于如何与拼图模块交互的规范定义行为。
此时 运行 在 "classpath mode" 中的所有应用程序服务器 运行 在 JDK9 上运行,这实际上意味着它们不使用拼图。
在大多数情况下,将模块信息引入您的 war 部署只会导致部署问题,因为 JDK 可能会尝试以不同于应用服务器其他部分的方式加载它。或者它甚至不会有所作为,因为大多数应用程序服务器都有用于加载 jar 和 类.
的自定义逻辑如今一些应用服务器已经实现了某种模块化,例如 OSGi(GlassFish、Liberty)或 jboss-modules(Wildfly) 但是此时jigsaw仍然有一些局限性能够运行这样的模块化系统在它之上。
所以简而言之,直到有更新的 EE 规范(可能是 9+)来描述 EE 部署应该如何 运行 在启用拼图的情况下 运行时间没有 "official"这种部署应该如何表现的方式。 在此之前,每个应用程序服务器都可以为其实现一些自定义支持,但它不会是标准的。