6.3. 创建自定义模块
可以添加自定义静态模块,以便为在 JBoss EAP 上运行的部署提供资源。您可以 手动创建 模块,也可以使用 管理 CLI 来创建模块。
创建模块后,如果需要将其资源提供给应用 ,则必须将模块添加为依赖项。
手动创建自定义模块
您可以按照以下步骤手动创建自定义模块。
在
EAP_HOME/modules/目录中创建适当的目录结构。示例:创建 MySQL JDBC Driver Directory 结构
cd EAP_HOME/modules/ mkdir -p com/mysql/main
$ cd EAP_HOME/modules/ $ mkdir -p com/mysql/mainCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 JAR 文件复制到
main/子目录中。示例:复制 MySQL JDBC 驱动程序 JAR
cp /path/to/mysql-connector-java-8.0.12.jar EAP_HOME/modules/com/mysql/main/
$ cp /path/to/mysql-connector-java-8.0.12.jar EAP_HOME/modules/com/mysql/main/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
main/子目录中创建module.xml文件,并在 文件中指定适当的资源和依赖项。示例:MySQL JDBC Driver
module.xml文件Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用管理 CLI 创建自定义模块
您可以使用模块 add management CLI 命令来创建自定义模块。
使用 模块 管理 CLI 命令添加和删除模块,仅作为技术预览提供。此命令不适合在受管域中使用,或在远程连接管理 CLI 时使用。在生产环境中,应当手动 添加 和删除 模块。
技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。
- 启动 JBoss EAP 服务器。
启动管理 CLI。
EAP_HOME/bin/jboss-cli.sh
$ EAP_HOME/bin/jboss-cli.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
模块 addmanagement CLI 命令,添加新的核心模块。module add --name=MODULE_NAME --resources=PATH_TO_RESOURCE --dependencies=DEPENDENCIES
module add --name=MODULE_NAME --resources=PATH_TO_RESOURCE --dependencies=DEPENDENCIESCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例:创建一个 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 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.apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参阅 模块命令参数 以了解可用于自定义此命令的参数,例如,使用外部模块目录提供您自己的
module.xml文件,或者为模块指定备选插槽。您还可以执行模块 --help来了解有关使用此命令添加和删除模块的更多详细信息。
添加模块作为依赖性
为了使您的应用能够访问此模块的资源,您必须将模块添加为依赖项。
- 有关将模块添加为依赖性到所有应用程序的说明,请参阅 Define Global Modules 部分。
例如,下列步骤添加一个 JAR 文件,该文件包含多个属性文件作为模块,再定义全局模块,以便应用随后可以加载这些属性。
将 JAR 文件添加为核心模块。
module add --name=myprops --resources=/path/to/properties.jar
module add --name=myprops --resources=/path/to/properties.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将此模块定义为全局模块,使它可供所有部署使用。
/subsystem=ee:list-add(name=global-modules,value={name=myprops})/subsystem=ee:list-add(name=global-modules,value={name=myprops})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,应用可以从 JAR 中包含的其中一个属性文件中检索属性。
Thread.currentThread().getContextClassLoader().getResource("my.properties");Thread.currentThread().getContextClassLoader().getResource("my.properties");Copy to Clipboard Copied! Toggle word wrap Toggle overflow