欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【Ovirt 笔记】JBoss modules 配置分析与整理

发布时间:2025/3/21 编程问答 81 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Ovirt 笔记】JBoss modules 配置分析与整理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

分析整理的版本为 Ovirt 3.4.5 版本。

项目的 pom 文件中,使用 <artifactId>jboss-modules-maven-plugin</artifactId> 插件,引入 JBoss 模块化管理,这是 JBoss 支持的静态加载配置方式的一种,采用模块化管理的项目有:dependencies、tools、compat、common、utils、dal、authentication

  • utils 项目为例,modules 配置文件存放位置:
    /backend/manager/modules/utils/src/main/modules/org/ovirt/engine/core/utils/main/module.xml,配置信息如下:
  • <module xmlns="urn:jboss:module:1.1" name="org.ovirt.engine.core.utils"> <resources><resource-root path="utils.jar"/> </resources><dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/><module name="org.apache.commons.fileupload"/> </dependencies> </module>
    • <module xmlns="urn:jboss:module:1.1" name="org.ovirt.engine.core.utils">
      name 定义了模块名称。
    • <resource-root path="utils.jar"/>,定义了模块生成的 jar 包名称。

    注意:如果是第三方依赖,该名称必须与 maven 的 artifactId 一致。

    • <dependencies> 定义了模块的依赖关系,通过 <module name="javax.api"/> 设置依赖的模块名称。

    注意:JBoss modules 是一个适用于 Java 的模块化(非层次化)类加载以及执行环境的实现。因此如果一个模块需要另一个模块的某些功能,必须进行依赖,这个依赖是不能传递的,例如 A 依赖于 B,B 依赖于 C,如果 A 使用了 C 的功能,那么 A 必须依赖 C。

  • Jboss 本身具有了很多的模块,可以直接进行依赖。文件位置:安装目录 /modules 中。例如 javax.api、javax.servlet.api 都是 Jboss 自带的模块。

  • 配置了模块,还需要把模块与 maven 管理的 jar 包配置建立关联关系。这部分工作 dependencies 项目进行了配置。engine 中只要是采用模块化管理的项目中引入了第三方包,都需要在 dependencies 项目中进行关联性配置。

    • dependenciespom 文件,配置了<dependency>,这里定义了 mavenjar 包管理。
    • <artifactId>jboss-modules-maven-plugin</artifactId><modules> 标签中,配置了模块的关联关系,例如:
    <module> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <moduleName>org.apache.commons.fileupload</moduleName> </module>

    mavencommons-fileupload 包与模块 org.apache.commons.fileupload 进行关联。

  • utils 为例,依赖其他模块。
    • 依赖 Jboss 自身包含的模块,那么只需要在 modules 文件中配置即可。
    <dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/> </dependencies>
    • 依赖的第三方包,是 Jboss 自身不包含的,那么需要在
      /backend/manager/dependencies/src/main/modules 文件夹下面,按模块名称建立目录。例如 org.apache.commons.fileupload 就需要创建 org/apache/commons/fileupload/main/ 目录,在该目录下创建 module.xml 配置文件,配置为新的模块:
    <module xmlns="urn:jboss:module:1.1" name="org.apache.commons.fileupload"><resources> <resource-root path="commons-fileupload.jar"/> </resources> <dependencies> <module name="javax.servlet.api"/> <module name="org.apache.commons.io"/> </dependencies> </module>

    再引入该模块:

    <dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/> <module name="org.apache.commons.fileupload"/> </dependencies>

    最理想的配置是,所有的模块都能找到依赖关系,最底层的依赖是 Jboss 自身包含的依赖。但是实际情况可能会复杂很多,模块与模块的依赖关系,可以通过查询 maven中央库 了解。

    • 如果模块单独使用的可能性不大,每次都需要联合其他模块一起使用实现某个功能,那么可以将这些模块统一配置为一个模块,简化配置。例如:
    <module xmlns="urn:jboss:module:1.1" name="org.springframework"> <resources> <resource-root path="spring-aop.jar"/><resource-root path="spring-asm.jar"/><resource-root path="spring-beans.jar"/> <resource-root path="spring-context.jar"/> <resource-root path="spring-core.jar"/> <resource-root path="spring-expression.jar"/> <resource-root path="spring-instrument.jar"/> <resource-root path="spring-jdbc.jar"/> <resource-root path="spring-ldap-core.jar"/> <resource-root path="spring-tx.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="org.apache.commons.lang"/> <module name="org.apache.commons.logging"/> <module name="org.aopalliance"/> <module name="sun.jdk"/> </dependencies> </module>

    将 spring 所需 jar 包统一划分为一个模块,使用到 spring 的地方,统一引入该模块即可。



    作者:羽杰
    链接:https://www.jianshu.com/p/c4e570176311
    來源:简书
     

    总结

    以上是生活随笔为你收集整理的【Ovirt 笔记】JBoss modules 配置分析与整理的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。