当前位置: 首页 > 面试题库 >

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

雍志新
2023-03-14
问题内容

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

另一方面,Java 9引入了 模块化JAR文件 的概念,即具有模块描述符(module- info.class)的JAR,该模块根据项目Jigsaw构成模块。

那么,WAR文件是否也可以包含模块描述符并生成“模块化WAR文件”?

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

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


问题答案:

当前,Java EE和Java 9(jigsaw)模块之间没有链接。未来的Java EE版本可能会引入规范定义的行为,说明如何与拼图模块交互。

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

在大多数情况下,将模块信息引入战争部署只会导致部署问题,因为JDK可能会尝试以不同于应用服务器其他部分的方式加载它。或者甚至没有什么不同,因为大多数应用服务器都具有用于加载jar和类的自定义逻辑。

如今,一些应用服务器已经实现了某种模块化,例如OSGi(GlassFish,Liberty)或jboss-
modules(Wildfly),但是目前,竖锯仍存在一些局限性,无法在其上运行此类模块化系统。

简而言之,直到更新了EE规范(大约9+)以描述EE部署应如何在启用了拼图的运行时上运行之前,还没有“正式”的方式来说明这种部署的行为方式。在此之前,每个应用程序服务器都可以为其实现一些自定义支持,但这并不是标准的。



 类似资料:
  • 主要内容:模块系统特征,创建模块Java 9是一种称为模块的新型编程组件。模块是一个自我描述的代码和数据集合,并有一个名称来标识它。 模块系统特征 使用模块组件,Java 9中增加了以下增强功能 - 引入了一个新的可选阶段,即链接时间。这个阶段介于编译时间和运行时间之间。 在此阶段,可以组合和优化一组模块,使用jlink工具制作自定义运行时映像。 javac,jlink和java有额外的选项来指定模块路径,它们进一步定位模块的定

  • 食氧;视窗7;JDK 9决赛从9日开始,21日结束;JUnit4.12和现有的应用程序。作为起点,可以编译、执行应用程序,并且所有JUnit测试都显示为绿色。现在我们使用eclipse生成文件模块信息。JAVA结果是: 但有一个错误:junit无法解析为模块。问题是:如何告诉文件junit没有定义任何模块,应该在兼容模式下运行?

  • 我想在Eclipse中的Java9模块化项目上使用JUnit5运行测试,而不使用Maven、Gradle或所有那些花哨的东西。因此,我有路径,其中module-info.java和模块的包所在,还有所有测试类所在。Id est业务照常,在拼图模块系统之前。我有Eclipse Oxygen.3a(4.7.3a)和Java 10.0.1。 我看过一些来自Eclipse的视频,展示了如何将JUnit测试

  • null 我们是否必须构建没有依赖项的jar,war,并让它们在生产机器上第一次引导时下载依赖项?还是单独的依赖包,这样在增量部署中,我们就不需要重新上传整个东西了吗? 问候, 更新1:

  • 模块组件化 在 coolie 的世界里,任何文件都可以作为模块来进行载入, 因此模块化组件非常容易实现。 如 banner 组件: banner ├── index.js ├── style.css <= style.scss ├── arrow.png └── template.html 模块组件入口是index.js,然后自主管理自己的模块,如样式、图片、模板等等。 使用模块组件: var

  • 我想混淆我的web应用程序构建为WAR存档,因为这个敏感的应用程序第一次部署在我们的数据中心之外。我尝试使用Proguard GUI工具来混淆输入war,包括UI应用程序所需的所有服务jar,以及其他外部依赖项。虽然Proguard在一些警告下成功运行,例如库类[javax.servlet.unavailableException]的定义重复,但输出war不包含类,而是包含库jar和web.xml