3.5. 配置数据
3.5.1. 独立服务器配置文件 复制链接链接已复制到粘贴板!
独立配置文件位于 EAP_HOME/standalone/configuration/ 目录中。对于五个预定义的配置集(default, ha, full, full-ha, load-balancer),每个都有单独的文件。以下是启动 JBoss EAP 时可以使用管理 CLI 进行修改的示例配置文件。
| 配置文件 | 用途 |
|---|---|
|
| 此独立配置文件是 Jakarta EE Web 配置文件认证的配置,以及 JBoss EAP 启动单机服务器时使用的默认配置。此配置包含有关服务器的所有信息,包括子系统、网络、部署、套接字绑定和其他 Jakarta EE Web 配置文件可配置详细信息。此配置不提供消息传递或高可用性所需的子系统。 |
|
|
此单机配置文件是 Jakarta EE Web 配置文件认证的配置具有高可用性,包括所有默认子系统,并且添加了高可用性所需的 |
|
|
此独立配置文件是 Jakarta EE 完整平台认证配置,包括所有默认子系统,并添加 |
|
| 此独立配置文件是 Jakarta EE 完整平台认证配置,包括对每个可能的子系统的支持,包括消息传递和高可用性的支持。 |
|
| 此单机配置文件包含使用内置 mod_cluster 前端负载平衡器对其他 JBoss EAP 实例进行负载平衡所需的最小子系统。 |
默认情况下,将 JBoss EAP 作为单机服务器启动使用 standalone.xml 文件。若要使用其他配置启动 JBoss EAP,可使用 --server-config 参数:例如,
EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml
$ EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml
使用 YAML 文件更新单机服务器
使用 YAML 文件配置单机服务器可外部化自定义流程,并提高服务器升级的速度。使用此功能时,服务器以只读模式启动。这意味着,在服务器重启后,对配置的更改不会保留。
受管域中的服务器 不支持 YAML 配置。
用户可以修改 YAML 文件中的各种资源。YAML 文件支持以下元素:
-
core-service -
interface -
socket-binding-group -
subsystem -
system-property
YAML 文件 不支持 以下元素:
-
扩展:向服务器添加扩展。不支持这个元素,因为它可能需要缺少的模块。 -
部署:添加部署到服务器。这个元素不被支持,因为它除了配置外还需要更多大量更改。 -
deployment-overlay:将 deployment-overlays 添加到服务器。这个元素不被支持,因为它除了配置外还需要更多大量更改。 -
路径:在解析 YAML 文件时定义就绪。
YAML root 节点是 wildfly-configuration。您可以跟踪模型树来修改资源。如果资源已存在(由 XML 配置文件或以前的 YAML 文件创建),您可以使用模型树更新它。如果资源不存在,您可以使用模型树创建它。
定义新的 PostGresql 数据源的 YAML 配置文件示例
上面的示例定义了名为 postgresql 的 jdbc-driver,以及名为 PostgreSQLDS 的数据源。
您不能使用 YAML 配置文件来管理模块。相反,您需要手动或通过管理 CLI 创建或调配 org.postgresql.jdbc 模块。
3.5.1.1. 使用标签进行 YAML 文件操作 复制链接链接已复制到粘贴板!
您可以使用标签对 YAML 配置文件执行几个操作。
!undefine: undefine a attributeundefine
CONSOLE日志记录器级别 YAML 配置文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow !remove:删除资源删除嵌入的 Artemis 代理并连接到远程代理 YAML 配置文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow !list-add: 向列表添加一个元素(使用可选索引)将
RemoteTransactionPermission添加到权限列表 YAML 配置文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果未定义
index属性,该条目将附加到列表的末尾。
3.5.1.2. 使用 YAML 文件启动单机服务器 复制链接链接已复制到粘贴板!
您可以使用 YAML 配置文件启动单机服务器。
流程
- 打开终端。
使用以下命令启动带有 YAML 文件的单机服务器:
./standalone.sh -y=/home/ehsavoie/dev/wildfly/config2.yml:config.yml -c standalone-full.xml
./standalone.sh -y=/home/ehsavoie/dev/wildfly/config2.yml:config.yml -c standalone-full.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow --yamlor-y参数允许您传递 YAML 文件列表。您必须使用分号(;)对于 Windows Server 或基于 Unix 的操作系统的冒号(:)来分隔每个 YAML 文件路径。您可以使用绝对路径、相对于当前执行目录的路径,或者相对于独立配置目录的路径。操作按照定义文件的顺序以及 XML 配置定义初始操作后的顺序应用。
3.5.2. 受管域配置文件 复制链接链接已复制到粘贴板!
受管域配置文件位于 EAP_HOME/domain/configuration/ 目录中。以下是启动 JBoss EAP 时可以使用管理 CLI 进行修改的示例配置文件。
| 配置文件 | 用途 |
|---|---|
|
| 这是受管域的主配置文件。只有域控制器会读取此文件。此文件包含所有配置集(default, ha, full, full-ha, load-balancer)的配置。 |
|
|
此文件包含特定于受管域中物理主机的配置详细信息,如网络接口、套接字绑定、主机名称和其他特定于主机的详细信息。 |
|
|
此文件仅包含将服务器作为受管域控制器运行所需的配置详细信息。 |
|
|
此文件仅包含作为受管域主机控制器运行服务器所需的配置详细信息。它没有定义域控制器,您必须为 |
默认情况下,在受管域中启动 JBoss EAP 将使用 host.xml 文件。若要使用其他配置启动 JBoss EAP,可使用 --host-config 参数:例如,
EAP_HOME/bin/domain.sh --host-config=host-primary.xml
$ EAP_HOME/bin/domain.sh --host-config=host-primary.xml
3.5.3. 备份配置数据 复制链接链接已复制到粘贴板!
要恢复您的 JBoss EAP 服务器配置,您必须在以下位置备份数据:
EAP_HOME/standalone/configuration/- 备份整个目录,以保存单机服务器的用户数据、服务器配置和日志记录设置。
EAP_HOME/standalone/data- 为在 data/content 目录中限制的受管部署备份数据。
EAP_HOME/standalone/deployments- 备份独立服务器的部署。
EAP_HOME/domain/configuration/- 备份整个目录,以保存用户和配置文件数据、域和主机配置,以及受管域的日志记录设置。
EAP_HOME/domain/data- 备份 data/content 目录中限制的受管域和部署的数据。
EAP_HOME/modules/- 备份任何自定义模块。
EAP_HOME/welcome-content/- 备份任何自定义欢迎内容。
EAP_HOME/bin/- 备份任何自定义脚本或启动配置文件。
3.5.4. 配置文件快照 复制链接链接已复制到粘贴板!
为了协助服务器维护和管理,JBoss EAP 在启动时创建原始配置文件的时间戳版本。
管理操作的任何其他配置更改将导致自动备份原始文件,保留实例的工作副本供引用和回滚。此外,还可以生成配置快照,它们是当前服务器配置的即时副本。这些快照可由管理员保存和加载。
以下示例使用 standalone.xml 文件,但同一进程适用于 domain.xml 和 host.xml 文件。
创建快照
使用管理 CLI 为当前配置生成快照。
:take-snapshot
{
"outcome" => "success",
"result" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20151022-133109702standalone.xml"
}
:take-snapshot
{
"outcome" => "success",
"result" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20151022-133109702standalone.xml"
}
列出快照
使用管理 CLI 列出所有快照。
删除快照
使用管理 CLI 删除快照。
:delete-snapshot(name=20151022-133109702standalone.xml)
:delete-snapshot(name=20151022-133109702standalone.xml)
3.5.5. 使用快照启动服务器 复制链接链接已复制到粘贴板!
您可以使用快照或自动保存的配置版本来启动服务器。
先决条件
- 您已安装了 JBoss EAP。
- 您已生成了一个配置文件的快照。
流程
-
进入
EAP_HOME/standalone/configuration/standalone_xml_history目录,找到要加载的快照或保存的配置文件。 启动服务器并指向所选配置文件。传递与配置目录相关的文件路径
EAP_HOME/standalone/configuration/。EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20151022-133109702standalone.xml
$ EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20151022-133109702standalone.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在受管域中运行服务器时,请使用 --host-config 和 --domain-config=<config> 参数来指定配置文件。
3.5.6. 查看配置更改 复制链接链接已复制到粘贴板!
您可以使用 JBoss EAP 跟踪对正在运行的系统进行的配置更改。这样,管理员可以查看由其他授权用户进行的配置更改的历史记录。
更改存储在内存中,且在服务器重新启动之间不会被保留。此功能不是 管理审计日志记录 的替代品。
您可以通过 管理 CLI 或管理控制台 启用跟踪和查看配置更改。???
从管理 CLI 跟踪和查看配置更改
要启用跟踪配置更改,请使用以下管理 CLI 命令:您可以使用 max-history 属性指定要存储的条目数量。
/subsystem=core-management/service=configuration-changes:add(max-history=20)
/subsystem=core-management/service=configuration-changes:add(max-history=20)
在受管域中,在主机和服务器相关的修改的主机级别上跟踪配置更改。为主机控制器启用配置更改可为其所有受管服务器启用它。您可以使用以下命令跟踪每个主机的配置更改。
/host=HOST_NAME/subsystem=core-management/service=configuration-changes:add(max-history=20)
/host=HOST_NAME/subsystem=core-management/service=configuration-changes:add(max-history=20)
要查看最近的配置更改的列表,请使用以下管理 CLI 命令:
/subsystem=core-management/service=configuration-changes:list-changes
/subsystem=core-management/service=configuration-changes:list-changes
在受管域中,您可以使用以下命令列出主机的配置更改:
/host=HOST_NAME/subsystem=core-management/service=configuration-changes:list-changes
/host=HOST_NAME/subsystem=core-management/service=configuration-changes:list-changes
您可以使用以下命令列出影响特定服务器的配置更改。
/host=HOST_NAME/server=SERVER_NAME/subsystem=core-management/service=configuration-changes:list-changes
/host=HOST_NAME/server=SERVER_NAME/subsystem=core-management/service=configuration-changes:list-changes
这会列出所做的每个配置更改,以及日期、来源、结果和操作详情。例如,以下 list-changes 命令的输出显示配置更改,首先显示最新的显示:
这个示例列出了影响配置的三个操作的详情:
- 从管理 CLI 重新加载服务器。
-
从管理 CLI 禁用
ExampleDS数据源. -
从管理控制台中删除
ExpiryQueue队列。
从管理控制台跟踪和查看配置更改
要启用从管理控制台跟踪配置更改,请选择 Runtime 选项卡,导航到服务器或主机,以跟踪更改并从下拉菜单中选择 Configuration Changes。点 Enable Configuration Changes 并提供最大历史记录值。
然后,此页中的表会列出所做的每个配置更改,以及日期、来源、结果和操作详情。
3.5.7. 属性替换 复制链接链接已复制到粘贴板!
您可以在 JBoss EAP 中使用表达式来定义可替换属性,以替换配置中的文字值。
在 standalone*.xml 或 domain.xml 配置文件中使用属性替换,将属性替换为系统属性中找到的值。系统属性定义在 EAP 配置文件 xml 文件中,也可以在命令行终端中输入 -D 命令来定义。
要确定给定子系统中是否允许属性替换,请使用以下命令显示子系统配置的描述:
/subsystem=datasources:read-resource-description(recursive=true)
/subsystem=datasources:read-resource-description(recursive=true)
如果 expressions-allowed 属性被设为 true,则允许属性替换。
表达式的格式为 ${PARAMETER:DEFAULT_VALUE}。如果设置了指定参数,则将使用参数的值。否则,将使用提供的默认值。
解析表达式支持的源是系统属性和环境变量。使用环境变量解析表达式时,请使用 ${env.LANG} 格式。
来自 standalone.xml 配置文件的以下示例,将 public 接口的 inet-address 设为 127.0.0.1,除非设置了 jboss.bind.address 参数。
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
在将 EAP 作为独立服务器启动时,您可以使用以下命令设置 jboss.bind.address 参数:
EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
对于部署,源可以是部署存档中的 META-INF/jboss.properties 文件中的属性。对于支持子部署的部署类型,如果属性文件位于外部部署中,则解析范围仅限于所有子部署,如 EAR。如果属性文件在子部署中,则解析的范围仅限于该子部署。
3.5.8. 嵌套表达式 复制链接链接已复制到粘贴板!
您可以嵌套表达式,它允许更高级地使用表达式来代替固定值。
嵌套表达式的格式类似于普通表达式的格式,但一个表达式被嵌入在另一个表达式中,例如:
${SYSTEM_VALUE_1${SYSTEM_VALUE_2}}
${SYSTEM_VALUE_1${SYSTEM_VALUE_2}}
JBoss EAP 会递归评估嵌套表达式,因此首先评估 inner 表达式,然后评估 outer 表达式。表达式也可以是递归的,其中表达式被解析为另一个表达式,其然后再被解析。允许表达式的任何位置都允许嵌套表达式,但管理 CLI 命令除外。
例如,如果数据源定义密码被屏蔽,您可以使用嵌套的表达式。
3.5.9. 基于描述符的属性替换 复制链接链接已复制到粘贴板!
部署基于描述符的属性替换根据描述符替换属性,以便您可以删除应用程序和构建链中有关环境的假设。
特定环境的配置可以在部署描述符中指定,而不是注释或构建系统脚本。您可以在文件中提供配置,或者作为参数在命令行中提供。
应用程序配置(如数据源连接参数)通常会因开发、测试和生产环境而异。构建系统脚本有时可以容纳这种差异,因为 Jakarta EE 规范不包含将这些配置外部化的方法。借助 JBoss EAP,您可以使用基于描述符的属性替换在外部管理配置。
spec-descriptor-property-replacement 标志控制 Jakarta EE 描述符替换,JBoss EAP 默认 禁用 它。启用后,您可以在以下部署描述符中替换属性:
-
ejb-jar.xml -
permissions.xml -
persistence.xml -
application.xml -
web.xml
您可以使用以下管理 CLI 命令,来在 Jakarta EE 描述符中启用或禁用属性替换:
/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)
/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)
jboss-descriptor-property-replacement 标志控制特定于 JBoss 的描述符替换,而 JBoss EAP 默认启用它。启用后,您可以在以下部署描述符中替换属性:
-
jboss-ejb3.xml -
jboss-app.xml -
jboss-web.xml -
jboss-permissions.xml -
*-jms.xml -
*-ds.xml
使用以下管理 CLI 命令,来在 JBoss EAP 特定描述符中启用或禁用属性替换:
/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)
/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)
注解-property-replacement 标志控制注释内的属性替换,它默认不启用。启用后,您可以替换应用程序类中注释属性中的属性。
使用以下管理 CLI 命令,来在注释中启用或禁用属性替换:
/subsystem=ee:write-attribute(name="annotation-property-replacement",value=VALUE)
/subsystem=ee:write-attribute(name="annotation-property-replacement",value=VALUE)
当设置系统属性值时,您可以将 annotation-property-replacement 设置为 true,以在注解中启用属性替换。例如,您可以设置系统属性来替换 Message Driven Bean 上的 maxSession 值:
您可以将 -DexampleMDB.maxSession 系统属性设置为 100。如果没有设置此系统属性,则该值将默认为 20。
3.5.10. 使用 Git 管理配置数据 复制链接链接已复制到粘贴板!
您可以使用 Git 管理并持久保留服务器配置数据、属性文件和部署。这不仅允许您管理这些文件的版本历史记录,还允许您使用一个或多个 Git 存储库在多个服务器和节点之间共享服务器和应用程序配置。此功能仅适用于使用默认配置目录布局的单机服务器。
您可以选择 在本地 Git 存储库中 使用配置数据,也可以从 远程 Git 存储库拉取镜像。Git 存储库在 jboss.server.base.dir 目录中配置,这是单机服务器内容的基础目录。将 jboss.server.base.dir 目录配置为使用 Git 后,JBoss EAP 将使用管理 CLI 或管理控制台自动将您对配置进行的每个更新提交。通过手动编辑配置文件在服务器外进行的任何更改都不会提交或保留;但是,您可以使用 Git CLI 添加和提交手动更改。您还可以使用 Git CLI 查看提交历史记录、管理分支和管理内容。
要使用这个功能,请在启动服务器时在命令行上传递一个或多个参数。
| 参数 | 描述 |
|---|---|
| --git-repo |
用于管理和持久服务器配置数据的 Git 存储库的位置。如果为本地存储则可以是 |
| --git-branch | Git 存储库中要使用的分支或标签名称。此参数应命名现有的分支或标签名称,因为如果不存在,则不会创建该分支或标签名称。如果使用标签名称,请将存储库置于分离的 HEAD 状态,这意味着以后的提交不会附加到任何分支。标签名称为只读,通常在多个节点之间复制配置时使用。 |
| --git-auth |
指向 Elytron 配置文件的 URL,该文件包含连接远程 Git 存储库时要使用的凭据。如果您的远程 Git 存储库需要身份验证,则需要此参数。Elytron 不支持 SSH。因此,只支持使用没有密码的私钥进行默认的 SSH 身份验证。此参数不能与 |
使用本地 Git 存储库
要使用本地 Git 存储库,请使用 --git-repo=local 参数启动服务器。您也可以在启动服务器时添加- -git-branch=GIT_BRANCH_NAME 参数,在远程存储库中指定可选分支或标签名称。此参数应命名现有的分支或标签名称,因为如果不存在,则不会创建该分支或标签名称。如果使用标签名称,请将存储库置于分离的 HEAD 状态,这意味着以后的提交不会附加到任何分支。
以下是使用本地存储库的 1.0.x 分支启动服务器的命令示例。
EAP_HOME/bin/standalone.sh --git-repo=local --git-branch=1.0.x
$ EAP_HOME/bin/standalone.sh --git-repo=local --git-branch=1.0.x
如果您使用参数启动服务器 以使用本地 Git 存储库,JBoss EAP 会检查是否已为 Git 配置 jboss.server.base.dir 目录。如果没有,JBoss EAP 会使用现有配置内容在 jboss.server.base.dir 目录中创建并初始化 Git 存储库。JBoss EAP 检查由 -git-branch 参数传递 的分支名称。如果该参数未通过,它将检查 master 分支。初始化后,您应该在单机服务器内容基本目录中看到 .git/ 目录和一个 .gitignore 文件。
使用远程 Git 存储库
要使用远程 Git 存储库,请使用 --git-repo=REMOTE_REPO 参数启动服务器。参数的值可以是 URL 或您手动添加到本地 Git 配置中的远程别名。
您也可以在启动服务器时添加- -git-branch=GIT_BRANCH_NAME 参数,在远程存储库中指定可选分支或标签名称。此参数应命名现有的分支或标签名称,因为如果不存在,则不会创建该分支或标签名称。如果使用标签名称,请将存储库置于分离的 HEAD 状态,这意味着以后的提交不会附加到任何分支。
如果您的 Git 存储库需要身份验证,则必须在启动服务器时添加 --git-auth=AUTH_FILE_URL 参数。此参数应该是 Elytron 配置文件的 URL,其中包含连接到 Git 存储库所需的凭证。以下是 WildFly 客户端配置文件的示例,该文件指定可用于身份验证的 Elytron 配置。
Elytron 不支持 SSH。因此,只支持使用没有密码的私钥进行默认的 SSH 身份验证。
以下是使用完整配置文件启动服务器的命令示例,使用远程 eap-configuration 存储库的 1.0.x 分支,并将 URL 传递给包含身份验证凭据的 Elytron 配置文件。
EAP_HOME/bin/standalone.sh --git-repo=https://github.com/MY_GIT_ID/eap-configuration.git --git-branch=1.0.x --git-auth=file:///home/USER_NAME/github-wildfly-config.xml --server-config=standalone-full.xml
$ EAP_HOME/bin/standalone.sh --git-repo=https://github.com/MY_GIT_ID/eap-configuration.git --git-branch=1.0.x --git-auth=file:///home/USER_NAME/github-wildfly-config.xml --server-config=standalone-full.xml
如果您使用参数启动服务器以使用远程 Git 存储库,JBoss EAP 会检查是否为 Git 配置 jboss.server.base.dir 目录。如果没有,JBoss EAP 会删除 jboss.server.base.dir 目录中现有的配置文件,并将它们替换为远程 Git 配置数据。JBoss EAP 检查由 -git-branch 参数传递 的分支名称。如果该参数未通过,它将检查 master 分支。此过程完成后,您应该会在基本目录中看到 .git/ 目录和一个 .gitignore 文件,以供单机服务器内容使用。
如果您稍后启动服务器传递一个不同于最初使用的不同 -git-repo URL 或- -git-branch 名称,您将看到错误消息 java.lang.RuntimeException: WFLYSRV0268: Failed to pull the repository GIT_REPO_NAMEwhen when you to pull the repository GIT_REPO_NAME。这是因为 JBoss EAP 尝试从 jboss.server.base.dir 目录中当前配置的存储库和分支拉取配置数据,而 Git pull 会导致冲突。
使用 Git 时发布远程配置数据
您可以使用管理 CLI 发布 配置操作将 Git 存储库更改推送到远程存储库。由于 JBoss EAP 在您启动服务器时从远程 Git 存储库拉取配置,因此这允许您在多个服务器间共享配置数据。您只能在远程存储库中使用此操作。它不适用于本地存储库。
以下管理 CLI 操作将配置数据发布到远程 eap-configuration 存储库。
:publish-configuration(location="=https://github.com/MY_GIT_ID/eap-configuration.git")
{"outcome" => "success"}
:publish-configuration(location="=https://github.com/MY_GIT_ID/eap-configuration.git")
{"outcome" => "success"}
通过 Git 使用快照
除了使用 Git 提交历史记录来跟踪配置更改外,您还可以执行快照来在特定时间点保留配置。您可以列出快照并删除快照。
使用 Git 时执行快照
快照作为标签存储在 Git 中。您可以将快照标签名称和提交消息指定为 take-snapshot 操作的参数。
以下管理 CLI 操作采用快照,并将标签命名为"snapshot-01"。
:take-snapshot(name="snapshot-01", comment="1st snapshot")
{
"outcome" => "success",
"result" => "1st snapshot"
}
:take-snapshot(name="snapshot-01", comment="1st snapshot")
{
"outcome" => "success",
"result" => "1st snapshot"
}
使用 Git 时列出快照
您可以使用 list-snapshots 操作列出所有快照标签。
以下管理 CLI 操作列出了快照标签。
使用 Git 时删除快照
您可以通过在 delete-snapshot 操作上传递标签名称来删除特定的快照。
以下管理 CLI 操作删除标签名为 "snapshot-01" 的快照。
:delete-snapshot(name="snapshot-01")
{"outcome" => "success"}
:delete-snapshot(name="snapshot-01")
{"outcome" => "success"}