6.3. 创建自定义模块

可以添加自定义静态模块,以便为在 JBoss EAP 上运行的部署提供资源。您可以 手动创建 模块,也可以使用 管理 CLI 来创建模块。

创建模块后,如果需要将其资源提供给应用 ,则必须将模块添加为依赖项

手动创建自定义模块

您可以按照以下步骤手动创建自定义模块。

  1. EAP_HOME/modules/ 目录中创建适当的目录结构。

    示例:创建 MySQL JDBC Driver Directory 结构

    $ cd EAP_HOME/modules/
    $ mkdir -p com/mysql/main

  2. 将 JAR 文件复制到 main/ 子目录中。

    示例:复制 MySQL JDBC 驱动程序 JAR

    $ cp /path/to/mysql-connector-java-8.0.12.jar EAP_HOME/modules/com/mysql/main/

  3. main/ 子目录中创建 module.xml 文件,并在 文件中指定适当的资源和依赖项。

    示例:MySQL JDBC Driver module.xml 文件

    <?xml version="1.0" ?>
    <module xmlns="urn:jboss:module:1.1" name="com.mysql">
      <resources>
        <resource-root path="mysql-connector-java-8.0.12.jar"/>
      </resources>
      <dependencies>
        <module name="javaee.api"/>
        <module name="sun.jdk"/>
        <module name="ibm.jdk"/>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
      </dependencies>
    </module>

使用管理 CLI 创建自定义模块

您可以使用模块 add management CLI 命令来创建自定义模块

重要

使用 模块 管理 CLI 命令添加和删除模块,仅作为技术预览提供。此命令不适合在受管域中使用,或在远程连接管理 CLI 时使用。在生产环境中,应当手动 添加 和删除 模块。

技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

  1. 启动 JBoss EAP 服务器。
  2. 启动管理 CLI。

    $ EAP_HOME/bin/jboss-cli.sh
  3. 使用 模块 add management CLI 命令,添加新的核心模块。

    module add --name=MODULE_NAME --resources=PATH_TO_RESOURCE --dependencies=DEPENDENCIES

    示例:创建一个 MySQL 模块

    module add --name=com.mysql --resources=/path/to/mysql-connector-java-8.0.12.jar --dependencies=javaee.api,sun.jdk,ibm.jdk,javax.api,javax.transaction.api

    请参阅 模块命令参数 以了解可用于自定义此命令的参数,例如,使用外部模块目录提供您自己的 module.xml 文件,或者为模块指定备选插槽。您还可以执行 模块 --help 来了解有关使用此命令添加和删除模块的更多详细信息。

添加模块作为依赖性

为了使您的应用能够访问此模块的资源,您必须将模块添加为依赖项。

  • 有关将模块添加为依赖性到所有应用程序的说明,请参阅 Define Global Modules 部分。

例如,下列步骤添加一个 JAR 文件,该文件包含多个属性文件作为模块,再定义全局模块,以便应用随后可以加载这些属性。

  1. 将 JAR 文件添加为核心模块。

    module add --name=myprops --resources=/path/to/properties.jar
  2. 将此模块定义为全局模块,使它可供所有部署使用。

    /subsystem=ee:list-add(name=global-modules,value={name=myprops})
  3. 然后,应用可以从 JAR 中包含的其中一个属性文件中检索属性。

    Thread.currentThread().getContextClassLoader().getResource("my.properties");