5.7. 创建全局目录
全局目录可以更好地替代全局模块方法。例如,如果要更改全局模块中列出的库名称,您必须删除全局模块,更改库的名称,然后将库添加到一个新的全局模块。如果您更改了全局目录中列出的库名称,您只需要重新载入服务器,以便对所有部署都可用库名称更改。
使用全局目录,您可以执行以下操作:
- 在已部署的应用程序间共享多个库。
- 通过将常用框架(通常添加到应用程序库)移到一个通用位置来维护库。
当您创建全局目录时,EE 子系统配置全局目录,然后扫描目录以创建 JBoss 模块依赖项。模块依赖项包括全局目录库和 JAR 文件。这个模块依赖项还包括以下资源加载程序:
- 路径资源加载程序提供文件作为应用程序的资源。
- 资源加载程序向应用提供 JAR 文件中包含的类。
EE 子系统添加了一个模块依赖项,作为对各个部署的应用程序的系统依赖项。
先决条件
在操作系统上创建标准目录。此标准目录必须包含您需要部署到应用程序的所有 JAR 文件和资源。这会创建一个目录树。
显示复制到应用程序的通用库列表的常用目录示例:
/my-common-libs/log4j2.xml /my-common-libs/libs/log4j-api-2.14.1.jar /my-common-libs/libs/log4j-core-2.14.1.jar
/my-common-libs/log4j2.xml /my-common-libs/libs/log4j-api-2.14.1.jar /my-common-libs/libs/log4j-core-2.14.1.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于服务器部署了应用并加载全局目录,因此您无法配置全局目录来覆盖服务器的库版本。全局目录不能替换服务器附带的库。
流程
根据您的服务器设置,创建一个全局目录。您可以使用可选的
relative-to属性来设置带有相对路径的全局目录。在独立服务器上创建全局目录的示例:
[standalone@localhost:9990 /] /subsystem=ee/global-directory=my-common-libs:add(path=my-common-libs, relative-to=jboss.home.dir)
[standalone@localhost:9990 /] /subsystem=ee/global-directory=my-common-libs:add(path=my-common-libs, relative-to=jboss.home.dir)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在受管域中在服务器上创建全局目录的示例:
[domain@localhost:9990 /] /profile=default/subsystem=ee/global-directory=my-common-libs:add(path=my-common-libs, relative-to=jboss.server.data.dir)
[domain@localhost:9990 /] /profile=default/subsystem=ee/global-directory=my-common-libs:add(path=my-common-libs, relative-to=jboss.server.data.dir)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于受管域中的服务器,您可以使用
relative-path属性将全局目录添加到 JBoss EAP 配置文件下(在domain.xml中定义)。您可以指定系统路径或此relative-to属性的自定义系统路径。注意在受管域中运行服务器时,您必须确保全局目录的内容在所有服务器实例之间保持一致。例如,每个主机必须包含包含全局目录内容的本地文件系统目录。
重新加载服务器实例,以激活全局目录。
您必须重新加载服务器,以便服务器可以按字母顺序扫描目录树的内容,包括每个子目录级别(从根目录开始)。服务器以字母顺序将来自每个目录级别的文件添加到 JBoss 模块依赖项中。
如果更改全局目录的内容,或者在全局目录中更改或添加 JAR 文件,您必须重新加载服务器,使更改可供已部署的应用使用。例如,如果您替换全局目录中的 JAR 库,请重新加载服务器,以确保它重新扫描全局目录,并使用更改后的 JAR 库更新部署的应用程序。