使用 JBoss EAP XP 3.0.0
用于 JBoss EAP XP 3.0.0
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。要提供反馈,您可以突出显示文档中的文本并添加注释。按照以下步骤了解提交对红帽文档的反馈。
先决条件
- 登录到红帽客户门户。
- 在红帽客户门户中,以多页 HTML 格式查看文档。
流程
点 Feedback 查看现有的用户反馈信息。
注意反馈功能仅在多页 HTML 格式中启用。
- 高亮标记您要提供反馈的文档中的部分。
在您选择的文本旁的提示菜单中,点 Add Feedback。
文本框将在页面右侧的"反馈"部分中打开。
在文本框中输入您的反馈,然后点 Submit。
您已创建了文档问题。
- 要查看问题,请单击反馈视图中的问题跟踪器链接。
第 1 章 适用于最新 MicroProfile 功能的 JBoss EAP XP 复制链接链接已复制到粘贴板!
1.1. 关于 JBoss EAP XP 复制链接链接已复制到粘贴板!
MicroProfile 扩展包(JBoss EAP XP)作为补丁流提供,使用 JBoss EAP XP 管理器提供。
JBoss EAP XP 受到单独的支持和生命周期政策约束。如需了解更多详细信息,请参阅 JBoss Enterprise Application Platform 扩展包支持和生命周期政策 页。
JBoss EAP XP 补丁提供以下 MicroProfile 4.0 组件:
- MicroProfile Config
- MicroProfile 容错
- MicroProfile Health
- MicroProfile JWT
- MicroProfile Metrics
- MicroProfile OpenAPI
- MicroProfile OpenTracing
- MicroProfile REST 客户端
- MicroProfile 被动消息传递
MicroProfile 被动消息传递子系统支持红帽 AMQ 流。此功能实施 MicroProfile 主动消息传递 1.0 API,红帽提供作为 JBoss EAP XP 3.0.0 技术预览的功能。
红帽在 JBoss EAP 上测试了红帽 AMQ Streams 2021.Q2。但是,请查看红帽 JBoss 企业应用平台支持的配置页面,以获取有关已在 JBoss EAP XP 3.0.0 上测试的最新红帽 AMQ Streams 版本的信息。
1.2. JBoss EAP XP 安装 复制链接链接已复制到粘贴板!
安装 JBoss EAP XP 时,请确保 JBoss EAP XP 补丁与您的 JBoss EAP 版本兼容。JBoss EAP XP 3.0.x 补丁与 JBoss EAP 7.4 发行版兼容。
您可以通过 XP 管理器和 EAP 存档或使用 JBoss EAP XP OpenShift 容器镜像安装 JBoss EAP XP。您不能在 EAP RPM 基础上安装 JBoss EAP XP。
1.3. JBoss EAP XP 管理器 复制链接链接已复制到粘贴板!
JBoss EAP XP 管理器是可从 产品下载页面 下载的可执行 jar 文件。使用 JBoss EAP XP 管理器应用 JBoss EAP XP 补丁流中的 JBoss EAP XP 补丁程序。补丁中包含 MicroProfile 4.0 实施,以及这些 MicroProfile 4.0 实施的错误修复。
您无法使用管理控制台管理 JBoss EAP XP 补丁。
如果您不带任何参数运行 JBoss EAP XP 管理器,或者使用 help 命令运行 JBoss EAP XP 管理器,则您会获得所有可用命令的列表,并包含其作用的说明。
使用 help 命令运行管理器,以获取有关可用参数的更多信息。
大多数 JBoss EAP XP 管理器命令使用 --jboss-home 参数指向 JBoss EAP XP 服务器以管理 JBoss EAP XP 补丁流。如果要省略此设置,请在 JBOSS_HOME 环境变量中指定服务器的路径。--jboss-home 的优先级高于环境变量。
1.4. JBoss EAP XP Manager 3.0 命令 复制链接链接已复制到粘贴板!
JBoss EAP XP 管理器 3.0 提供了不同的命令来管理 JBoss EAP XP 补丁流并应用 JBoss EAP 7.4.x 基本补丁。
使用以下命令:
patch-apply使用此命令将补丁应用到您的 JBoss EAP 安装。
patch-apply命令类似于patch 应用管理 CLI 命令。patch-apply命令仅接受使用 工具应用补丁所需的参数。它为其他patch 应用管理 CLI 命令参数使用默认值。您可以使用
patch-apply命令,将补丁应用到在服务器上启用的任何补丁流。您还可以使用 命令应用基本服务器补丁和 XP 补丁。使用
patch-apply命令的示例:java -jar jboss-eap-xp-manager.jar patch-apply --jboss-home=/PATH/TO/EAP --patch=/PATH/TO/PATCH/jboss-eap-7.3.4-patch.zip
$ java -jar jboss-eap-xp-manager.jar patch-apply --jboss-home=/PATH/TO/EAP --patch=/PATH/TO/PATCH/jboss-eap-7.3.4-patch.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当您应用 XP 补丁时,JBoss EAP XP Manager 3.0 会执行验证以防止补丁和补丁流不匹配。以下示例演示了不正确的组合:
在设置了 XP 3.0 补丁流的服务器上尝试安装 JBoss EAP XP 2.0 补丁会导致以下错误:
java.lang.IllegalStateException: The JBoss EAP XP patch stream in the patch 'jboss-eap-xp-2.0' does not match the currently enabled JBoss EAP XP patch stream [jboss-eap-xp-3.0] at org.jboss.eap.util.xp.patch.stream.manager.ManagerPatchApplyAction.doExecute(ManagerPatchApplyAction.java:33) at org.jboss.eap.util.xp.patch.stream.manager.ManagerAction.execute(ManagerAction.java:40) at org.jboss.eap.util.xp.patch.stream.manager.ManagerMain.main(ManagerMain.java:50)
java.lang.IllegalStateException: The JBoss EAP XP patch stream in the patch 'jboss-eap-xp-2.0' does not match the currently enabled JBoss EAP XP patch stream [jboss-eap-xp-3.0] at org.jboss.eap.util.xp.patch.stream.manager.ManagerPatchApplyAction.doExecute(ManagerPatchApplyAction.java:33) at org.jboss.eap.util.xp.patch.stream.manager.ManagerAction.execute(ManagerAction.java:40) at org.jboss.eap.util.xp.patch.stream.manager.ManagerMain.main(ManagerMain.java:50)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试在尚未为 JBoss EAP XP 3.0 补丁流设置的服务器上安装 JBoss EAP XP 3.0 补丁会导致以下错误:
java.lang.IllegalStateException: You are attempting to install a patch for the 'jboss-eap-xp-3.0' JBoss EAP XP Patch Stream. However this patch stream is not yet set up in the JBoss EAP server. Run the 'setup' command to enable the patch stream. at org.jboss.eap.util.xp.patch.stream.manager.ManagerPatchApplyAction.doExecute(ManagerPatchApplyAction.java:29) at org.jboss.eap.util.xp.patch.stream.manager.ManagerAction.execute(ManagerAction.java:40) at org.jboss.eap.util.xp.patch.stream.manager.ManagerMain.main(ManagerMain.java:50)
java.lang.IllegalStateException: You are attempting to install a patch for the 'jboss-eap-xp-3.0' JBoss EAP XP Patch Stream. However this patch stream is not yet set up in the JBoss EAP server. Run the 'setup' command to enable the patch stream. at org.jboss.eap.util.xp.patch.stream.manager.ManagerPatchApplyAction.doExecute(ManagerPatchApplyAction.java:29) at org.jboss.eap.util.xp.patch.stream.manager.ManagerAction.execute(ManagerAction.java:40) at org.jboss.eap.util.xp.patch.stream.manager.ManagerMain.main(ManagerMain.java:50)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这两种情况下,不会对服务器进行任何更改。
remove使用此命令从 JBoss EAP 服务器中删除 JBoss EAP XP 补丁流设置。
使用
remove命令的示例java -jar jboss-eap-xp-manager.jar remove --jboss-home=/PATH/TO/EAP
$ java -jar jboss-eap-xp-manager.jar remove --jboss-home=/PATH/TO/EAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置使用此命令为 JBoss EAP XP 补丁流设置干净的 JBoss EAP 服务器。
当您使用
setup 命令时,JBoss EAP XP 管理器将执行以下操作:- 启用 JBoss EAP XP 3.0 补丁流。
-
应用使用
--base-patch 和 --xp-patch属性指定的补丁。 将
standalone-microprofile.xml和standalone-microprofile-ha.xml配置文件复制到服务器配置目录中。如果已安装旧配置文件,新文件将保存为目标配置目录中的时间戳副本,如
standalone-microprofile-yyyMMdd-HHmms.xml。您可以使用
--jboss-config-directory参数设置目标目录。
使用
setup命令的示例java -jar jboss-eap-xp-manager.jar setup --jboss-home=/PATH/TO/EAP
$ java -jar jboss-eap-xp-manager.jar setup --jboss-home=/PATH/TO/EAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow status使用此命令查找 JBoss EAP XP 服务器的当前状态。status 命令返回以下信息:
- JBoss EAP XP 流的状态。
- 由于处于当前状态,因此任何支持策略更改。
- JBoss EAP XP 的主要版本。
- 启用补丁流及其累积补丁 ID。
- 用于更改状态的可用 JBoss EAP XP 管理器命令.
使用
status命令的示例java -jar jboss-eap-xp-manager.jar status --jboss-home=/PATH/TO/EAP
$ java -jar jboss-eap-xp-manager.jar status --jboss-home=/PATH/TO/EAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow upgrade使用此命令将旧的 JBoss EAP XP 补丁流升级到 JBoss EAP 服务器中的最新补丁流。
使用
upgrade 命令时,JBoss EAP XP 管理器执行以下操作:- 创建 文件的备份,在服务器中启用旧补丁流。
- 启用 JBoss EAP XP 3.0 补丁流。
-
应用使用
--base-patch 和 --xp-patch属性指定的补丁。 -
将
standalone-microprofile.xml和standalone-microprofile-ha.xml配置文件复制到服务器配置目录中。如果已安装旧配置文件,新文件将保存为目标配置目录中的时间戳副本,如standalone-microprofile-yyyMMdd-HHmms.xml。 如果出现问题,JBoss EAP XP 管理器会尝试从它创建的备份中恢复之前的补丁流。
您可以使用
--jboss-config-directory参数设置目标目录
使用
upgrade命令的示例:java -jar jboss-eap-xp-manager.jar upgrade --jboss-home=/PATH/TO/EAP
$ java -jar jboss-eap-xp-manager.jar upgrade --jboss-home=/PATH/TO/EAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5. 在 JBoss EAP 7.4.x 上安装 JBoss EAP XP 3.0.0 复制链接链接已复制到粘贴板!
在 JBoss EAP 7.4 基础服务器上安装 JBoss EAP XP 3.0.0。
使用 JBoss EAP XP manager 3.0.0 管理 JBoss EAP XP 3.0.0 补丁流。
JBoss EAP XP 3.0.0 认证 JBoss EAP 7.4.x。
先决条件
您已从产品下载页面 下载了 以下文件:
-
jboss-eap-xp-3.0.0-manager.jar文件(JBoss EAP XP Manager 3.0) - JBoss EAP 7.4 服务器存档文件
- JBoss EAP XP 3.0.0 补丁
-
流程
- 将下载的 JBoss EAP 7.4 服务器存档文件提取到 JBoss EAP 安装的路径。
使用以下命令将 JBoss EAP XP Manager 3.0.0 设置为管理 JBoss EAP XP 3.0 补丁流:
java -jar jboss-eap-xp-manager.jar setup --jboss-home=<path_to_eap>
$ java -jar jboss-eap-xp-manager.jar setup --jboss-home=<path_to_eap>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以同时应用 JBoss EAP XP 3.0.0 补丁。使用
--xp-patch参数包括 JBoss EAP XP 3.0.0 补丁的路径。例如:
java -jar jboss-eap-xp-manager.jar setup --jboss-home=<path_to_eap> --xp-patch <path_to_patch>jboss-eap-xp-3.0.0-patch.zip
$ java -jar jboss-eap-xp-manager.jar setup --jboss-home=<path_to_eap> --xp-patch <path_to_patch>jboss-eap-xp-3.0.0-patch.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 服务器现在可以管理 JBoss EAP XP 3.0.0 补丁流。
可选:如果您尚未使用
--xp-patch参数将 JBoss EAP 3.0.0 补丁应用到 JBoss EAP 服务器,请使用 JBoss EAP XP Manager 3.0.0 命令应用 JBoss EAP XP 3.0.0补丁:java -jar jboss-eap-xp-manager.jar patch-apply --jboss-home=<path_to_eap> --patch=<path_to_patch>jboss-eap-xp-3.0.0-patch.zip
$ java -jar jboss-eap-xp-manager.jar patch-apply --jboss-home=<path_to_eap> --patch=<path_to_patch>jboss-eap-xp-3.0.0-patch.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow patch-apply命令类似于patch 应用管理 CLI 命令。您还可以使用patch apply managementCLI 命令应用补丁。
在您使用 JBoss EAP XP 3.0.0 修补程序修补 JBoss EAP 服务器时,JBoss EAP 服务器现在可以管理 JBoss EAP XP 3.0.0 补丁流。
1.6. 卸载 JBoss EAP XP 复制链接链接已复制到粘贴板!
卸载 JBoss EAP XP 将移除与启用 JBoss EAP XP 3.0.0 补丁流和 MicroProfile 4.0 功能相关的所有文件。卸载过程不会影响基本服务器补丁流或功能中的任何内容。
卸载过程不会删除任何配置文件,包括在启用 JBoss EAP XP 补丁流时添加到 JBoss EAP XP 补丁流的配置文件。
流程
发出以下命令卸载 JBoss EAP XP 3.0.0:
java -jar jboss-eap-xp-manager.jar remove --jboss-home=/PATH/TO/EAP
$ java -jar jboss-eap-xp-manager.jar remove --jboss-home=/PATH/TO/EAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow
要再次安装 MicroProfile 4.0 功能,请再次运行 setup 命令以启用补丁流,然后应用 JBoss EAP XP 补丁来添加 MicroProfile 4.0 模块。
1.7. 查看 JBoss EAP XP 的状态 复制链接链接已复制到粘贴板!
您可以使用 status 命令查看以下信息:
- JBoss EAP XP 流的状态。
- 由于处于当前状态,因此任何支持策略更改。
- JBoss EAP XP 的主要版本。
- 启用补丁流及其累积补丁 ID。
- 用于更改状态的可用 JBoss EAP XP 管理器命令.
JBoss EAP XP 可以处于以下状态之一:
未设置- JBoss EAP 是干净的,未设置 JBoss EAP XP。
设置- JBoss EAP 设置了 JBoss EAP XP。不会显示 XP 补丁流的版本,因为用户可以使用 CLI 来确定修补程序。
不一致-
与 JBoss EAP XP 相关的文件处于不一致的状态。这是错误条件,不应正常发生。如果您遇到此错误,请删除 JBoss EAP XP 管理器(如卸载 JBoss EAP XP 主题中所述),然后使用
setup命令再次安装 JBoss EAP XP。
流程
发出以下命令来查看 JBoss EAP XP 的状态:
java -jar jboss-eap-xp-manager.jar status --jboss-home=<path_to_eap>
$ java -jar jboss-eap-xp-manager.jar status --jboss-home=<path_to_eap>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8. 回滚 JBoss EAP XP 和 JBoss EAP 7.4.x 基本补丁 复制链接链接已复制到粘贴板!
您可以使用管理 CLI 回滚之前应用的 JBoss EAP XP 补丁或 JBoss EAP 7.4.x 基本补丁。
第 2 章 了解 MicroProfile 复制链接链接已复制到粘贴板!
2.1. MicroProfile Config 复制链接链接已复制到粘贴板!
2.1.1. JBoss EAP 中的 MicroProfile 配置 复制链接链接已复制到粘贴板!
配置数据可以动态变化,应用需要能够在不重新启动服务器的情况下访问最新的配置信息。
MicroProfile 配置提供可移植的外部化配置数据。这意味着,您可以将应用和微服务配置为在多个环境中运行,无需修改或重新打包。
MicroProfile 配置功能在 JBoss EAP 中使用 SmallRye Config 组件实施,由 microprofile-config-smallrye 子系统提供。
MicroProfile Config 仅在 JBoss EAP XP 中受支持。JBoss EAP 不支持它。
如果您要添加自己的配置实施,则需要在最新版本的配置界面中使用方法。
2.1.2. MicroProfile 配置中支持的 MicroProfile 配置源 复制链接链接已复制到粘贴板!
MicroProfile 配置属性可以来自不同的位置,可以是不同的格式。这些属性由 ConfigSources 提供。ConfigSources 是 org.eclipse.microprofile.config.spi.ConfigSource 接口的实施。
MicroProfile 配置规范提供以下默认 ConfigSource 实施来检索配置值:
-
System.getProperties(). -
System.getenv(). -
课程路径
上的所有 META-INF/microprofile-config.properties文件.
The microprofile-config-smallrye 子系统支持其他类型的 ConfigSource 资源,用于检索配置值。您还可以从以下资源检索配置值:
-
a
microprofile-config-smallrye/config-source管理资源中的属性 - 目录中的文件
-
ConfigSource类 -
ConfigSourceProvider类
2.2. MicroProfile 容错 复制链接链接已复制到粘贴板!
2.2.1. 关于 MicroProfile 容错规范 复制链接链接已复制到粘贴板!
MicroProfile 容错规范定义策略,以处理分布式微服务中固有的错误。
MicroProfile 容错规范定义以下策略来处理错误:
- Timeout
- 定义执行必须完成的时间长度。定义超时可防止无限期等待执行。
- Retry
- 定义用于重试失败执行的条件。
- 回退
- 在执行失败时提供替代方案。
- CircuitBreaker
- 在临时停止之前,定义失败的执行尝试次数。您可以在恢复执行前定义延迟的长度。
- 舱壁
- 隔离系统部分内的故障,以便系统的其余部分仍能正常工作。
- 异步
- 在单独的线程中执行客户端请求。
其它资源
2.2.2. JBoss EAP 中的 MicroProfile 容错 复制链接链接已复制到粘贴板!
The microprofile-fault-tolerance-smallrye 子系统为 JBoss EAP 中的 MicroProfile 容错提供支持。该子系统仅可在 JBoss EAP XP 流中使用。
The microprofile-fault-tolerance-smallrye 子系统为拦截器绑定提供以下注释:
-
@Timeout -
@Retry -
@Fallback -
@CircuitBreaker -
@Bulkhead -
@Asynchronous
您可以在类级别或方法级别上绑定这些注解。绑定至类的注释适用于该类的所有业务方法。
以下规则适用于绑定拦截器:
如果组件类声明或继承类级别的拦截器绑定,则应用以下限制:
- 不得宣布课程结束。
- 类不得包含任何静态、私有或最终方法。
- 如果组件类的非静态、非专用方法声明了方法级拦截器绑定,则方法或组件类不能最终声明。
容错操作有以下限制:
- 容错拦截器绑定必须应用到 bean 类或 bean 类方法。
- 调用时,调用必须是 Jakarta Contexts 和 Dependency Injection 规范中定义的业务方法调用。
如果满足以下两个条件,则操作被视为容错:
- 该方法本身不与任何容错拦截器绑定。
- 包含该方法的类不绑定到任何容错拦截器。
除了 MicroProfile 容错提供的配置选项之外,microprofile-fault-tolerance-smallrye 子系统还提供以下配置选项:
-
io.smallrye.faulttolerance.globalThreadPoolSize -
io.smallrye.faulttolerance.timeoutExecutorThreads
2.3. MicroProfile Health 复制链接链接已复制到粘贴板!
2.3.1. JBoss EAP 中的 MicroProfile 健康 复制链接链接已复制到粘贴板!
JBoss EAP 包含 SmallRye 健康组件,可用于确定 JBoss EAP 实例是否按预期响应。此功能默认为启用。
MicroProfile 健康仅在将 JBoss EAP 作为单机服务器运行时才可用。
MicroProfile 健康规范定义以下健康检查:
- 就绪
-
确定应用是否已准备好处理请求。注释
@Readiness提供此健康检查。 - 存活度
-
确定应用是否正在运行。注释
@Liveness提供此健康检查。
MicroProfile Health 3.0 中移除了 @Health 注释。
MicroProfile 健康 3.0 有以下破坏更改:
-
修剪
@Health限定符 -
将 HealthCheckResponse
state参数重命名为status,以修复降序问题。这也导致相应方法重命名。
如需有关 MicroProfile Health 3.0 中破坏更改的更多信息,请参阅 MicroProfile Health 3.0 发行说明。
:empty-readiness-checks-status 和 :empty-liveness-checks-status 管理属性在未定义就绪 度 探测时指定全局状态。
或 存活度
2.4. MicroProfile JWT 复制链接链接已复制到粘贴板!
2.4.1. JBoss EAP 中的 MicroProfile JWT 集成 复制链接链接已复制到粘贴板!
subsystem microprofile-jwt-smallrye 在 JBoss EAP 中提供 MicroProfile JWT 集成。
下列功能由 microprofile-jwt-smallrye 子系统提供:
- 检测使用 MicroProfile JWT 安全性的部署.
- 激活对 MicroProfile JWT 的支持.
子系统不包含可配置的属性或资源。
除了 microprofile-jwt-smallrye 子系统外,org.eclipse.microprofile.jwt.auth.api 模块在 JBoss EAP 中提供 MicroProfile JWT 集成。
其它资源
2.4.2. 传统部署和 MicroProfile JWT 部署之间的区别 复制链接链接已复制到粘贴板!
MicroProfile JWT 部署不依赖于像传统的 JBoss EAP 部署一样管理 SecurityDomain 资源。相反,将创建虚拟 SecurityDomain 并在 MicroProfile JWT 部署中使用。
由于 MicroProfile JWT 部署完全在 MicroProfile Config 属性和 microprofile-jwt-smallrye 子系统内配置,虚拟 SecurityDomain 不需要任何其他管理的配置来进行部署。
2.4.3. JBoss EAP 中的 MicroProfile JWT 激活 复制链接链接已复制到粘贴板!
根据应用中是否存在 auth-method,为应用激活 MicroProfile JWT。
MicroProfile JWT 集成通过以下方式为应用激活:
-
作为部署流程的一部分,JBoss EAP 扫描应用存档,了解是否存在
auth-method。 -
如果存在
auth-method,并且定义为MP-JWT,则将激活 MicroProfile JWT 集成。
auth-method 可以在以下任一文件中指定:
-
包含扩展
javax.ws.rs.core.Application的类的文件,标有@LoginConfig标注 -
web.xml配置文件
如果在类中都定义了 auth-method,使用注释,并在 web.xml 配置文件中定义了,则使用 web.xml 配置文件中的定义。
2.4.4. JBoss EAP 中 MicroProfile JWT 的限制 复制链接链接已复制到粘贴板!
JBoss EAP 中的 MicroProfile JWT 实施有一些限制。
JBoss EAP 中存在以下 MicroProfile JWT 实施限制:
-
MicroProfile JWT 实施仅解析来自
mp.jwt.verify.publickey属性中提供的 JSON Web 密钥集(JWKS)的第一个密钥。因此,如果在第二个密钥后通过第二个密钥或密钥签名令牌声明,则令牌将失败,并且包含令牌的请求不会被授权。 - 不支持 JWKS 的 Base64 编码。
在这两种情况下,都可以引用明文 JWKS,而不使用 mp.jwt.verify.publickey.location 配置属性。
2.5. MicroProfile Metrics 复制链接链接已复制到粘贴板!
2.5.1. JBoss EAP 中的 MicroProfile 指标 复制链接链接已复制到粘贴板!
JBoss EAP 包括 SmallRye 指标组件。SmallRye 指标组件利用 microprofile-metrics-smallrye 子系统提供 MicroProfile 指标功能。
The microprofile-metrics-smallrye 子系统提供 JBoss EAP 实例的监控数据。子系统默认为启用。
The microprofile-metrics-smallrye 子系统仅在单机配置中启用。
2.6. MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
2.6.1. JBoss EAP 中的 MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
MicroProfile OpenAPI 使用 microprofile-openapi-smallrye 子系统集成在 JBoss EAP 中。
MicroProfile OpenAPI 规范定义一个 HTTP 端点,提供 OpenAPI 3.0 文档。OpenAPI 3.0 文档描述了主机的 REST 服务。OpenAPI 端点使用配置的路径进行注册,如 http://localhost:8080/openapi,它属于与部署关联的主机的根目录。
目前,虚拟主机的 OpenAPI 端点只能记录单个部署。若要将 OpenAPI 与注册在同一虚拟主机的不同上下文路径的多个部署一起使用,每一部署必须使用不同的端点路径。
默认情况下,OpenAPI 端点会返回 YAML 文档。您还可以使用 Accept HTTP 标头或格式查询参数来请求 JSON 文档。
如果给定应用的 Undertow 服务器或主机定义了 HTTPS 侦听器,则 OpenAPI 文档也可以使用 HTTPS 使用。例如,HTTPS 的端点是 https://localhost:8443/openapi。
2.7. MicroProfile OpenTracing 复制链接链接已复制到粘贴板!
2.7.1. MicroProfile OpenTracing 复制链接链接已复制到粘贴板!
跟踪服务边界请求的能力非常重要,特别是在请求可以在其生命周期内穿过多个服务的微服务环境中。
MicroProfile OpenTracing 规范定义用于访问 CDI-bean 应用中 OpenTracing 兼容 Tracer 接口的行为和 API。Tracer 接口自动跟踪 JAX-RS 应用。
行为指定如何为传入和传出请求自动创建 OpenTracing Spans。API 定义如何显式禁用或启用给定端点的追踪。
其它资源
- 有关 MicroProfile OpenTracing 规范的更多信息,请参见 MicroProfile OpenTracing 文档。
-
有关
Tracer接口的更多信息,请参阅Tracerjavadoc。
2.7.2. JBoss EAP 中的 MicroProfile OpenTracing 复制链接链接已复制到粘贴板!
您可以使用 microprofile-opentracing-smallrye 子系统来配置 Jakarta EE 应用的分布式追踪。此子系统使用 SmallRye OpenTracing 组件为 JBoss EAP 提供 MicroProfile OpenTracing 功能。
MicroProfile OpenTracing 2.0 支持应用的追踪请求。您可以使用管理 CLI 或管理控制台 JBoss EAP 管理 API,为 Jakarta EE 中常用的组件配置默认的 Jaeger Java 客户端跟踪器,以及一组检测库。
部署到 JBoss EAP 服务器的每个单独的 WAR 都会自动拥有自己的 跟踪器 实例。EAR 中的每个 WAR 都被视为单独的 WAR,每个 WAR 都有自己的 Tracer 实例。默认情况下,用于 Jaeger Client 的服务名称派生自部署名称,通常是 WAR 文件名。
在 microprofile-opentracing-smallrye 子系统中,您可以通过设置系统属性或环境变量来配置 Jaeger Java 客户端。
使用系统属性和环境变量配置 Jeager 客户端跟踪器作为技术预览提供。附属于 Jeager 客户端跟踪器的系统属性和环境变量可能会在以后的版本中有所改变,并相互不兼容。
默认情况下,Java Jaeger Client for Java 的 probabilistic 抽样策略被设置为 0.001,这意味着只对大约一千个 trace 进行抽样。若要对每个请求进行示例,请将系统属性 JAEGER_SAMPLER_TYPE 设置为 const,将 JAEGER_SAMPLER_PARAM 设置为 1。
其它资源
- 有关 SmallRye OpenTracing 功能的更多信息,请参阅 SmallRye OpenTracing 组件。
- 有关默认 tracer 的更多信息,请参阅 Jaeger Java 客户端。
-
有关
Tracer接口的更多信息,请参阅Tracerjavadoc。 - 有关覆盖默认追踪器和追踪 Jakarta 上下文和依赖注入 Bean 的更多信息,请参阅《 开发指南 》 中使用 Eclipse MicroProfile OpenTracing to Trace 请求。
- 有关配置 Jaeger 客户端的更多信息,请参阅 Jaeger 文档。
- 如需有关有效系统属性的更多信息,请参阅 Jaeger 文档中的 通过环境配置。
2.8. MicroProfile REST 客户端 复制链接链接已复制到粘贴板!
2.8.1. MicroProfile REST 客户端 复制链接链接已复制到粘贴板!
JBoss EAP XP 3.0.0 支持 MicroProfile REST 客户端 2.0,它构建于 Jakarta RESTful Web Services 2.1.6 客户端 API,以提供通过 HTTP 调用 RESTful 服务的类型安全方法。MicroProfile 类型 Safe REST 客户端定义为 Java 接口。利用 MicroProfile REST 客户端,您可以使用可执行代码编写客户端应用。
使用 MicroProfile REST 客户端使用以下功能:
- 直观的语法
- 供应商的程序注册
- 供应商声明注册
- 标头声明规格
- 在服务器中传播标头
-
ResponseExceptionMapper - Jakarta 上下文和依赖注入集成
- 访问服务器事件(SSE)
第 3 章 在 JBoss EAP 中管理 MicroProfile 复制链接链接已复制到粘贴板!
3.1. MicroProfile OpenTracing 管理 复制链接链接已复制到粘贴板!
3.1.1. 启用 MicroProfile Open Tracing 复制链接链接已复制到粘贴板!
使用下列管理 CLI 命令,通过将 子系统添加到服务器配置,为服务器实例全局启用 MicroProfile Open Tracing 功能:
流程
使用以下命令启用
microprofile-opentracing-smallrye子系统:/subsystem=microprofile-opentracing-smallrye:add()
/subsystem=microprofile-opentracing-smallrye:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器以使更改生效。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. 删除 microprofile-opentracing-smallrye 子系统 复制链接链接已复制到粘贴板!
The microprofile-opentracing-smallrye 子系统包含在默认的 JBoss EAP 7.4 配置中。此子系统为 JBoss EAP 7.4 提供 MicroProfile OpenTracing 功能。如果您在启用了 MicroProfile OpenTracing 时遇到系统内存或性能下降的问题,您可能想要禁用 microprofile-opentracing-smallrye 子系统。
您可以在管理 CLI 中使用 remove 操作,在全局范围内为给定服务器禁用 MicroProfile OpenTracing 功能。
流程
删除
microprofile-opentracing-smallrye子系统。/subsystem=microprofile-opentracing-smallrye:remove()
/subsystem=microprofile-opentracing-smallrye:remove()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器以使更改生效。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. 添加 microprofile-opentracing-smallrye 子系统 复制链接链接已复制到粘贴板!
您可以通过添加 microprofile-opentracing-smallrye 子系统来启用microprofile-opentracing-smallrye 子系统。在管理 CLI 中使用 add 操作,为给定的服务器全局启用 MicroProfile OpenTracing 功能。
流程
添加 子系统。
/subsystem=microprofile-opentracing-smallrye:add()
/subsystem=microprofile-opentracing-smallrye:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器以使更改生效。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4. 安装 Jaeger 复制链接链接已复制到粘贴板!
使用 docker 安装 Jaeger。
先决条件
-
已安装Docker。
流程
使用
docker在 CLI 中运行以下命令来安装 Jaeger:docker run -d --name jaeger -p 6831:6831/udp -p 5778:5778 -p 14268:14268 -p 16686:16686 jaegertracing/all-in-one:1.16
$ docker run -d --name jaeger -p 6831:6831/udp -p 5778:5778 -p 14268:14268 -p 16686:16686 jaegertracing/all-in-one:1.16Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. MicroProfile 配置 复制链接链接已复制到粘贴板!
3.2.1. 在 ConfigSource 管理资源中添加属性 复制链接链接已复制到粘贴板!
您可以将属性直接作为管理资源存储在 config-source 子系统中。
流程
创建 ConfigSource 并添加属性:
/subsystem=microprofile-config-smallrye/config-source=props:add(properties={"name" = "jim"})/subsystem=microprofile-config-smallrye/config-source=props:add(properties={"name" = "jim"})Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.2. 将目录配置为 ConfigSources 复制链接链接已复制到粘贴板!
属性作为文件存储在目录中时,file-name 是属性的名称,文件内容是 属性的值。
流程
创建要存储文件的目录:
mkdir -p ~/config/prop-files/
$ mkdir -p ~/config/prop-files/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
cd ~/config/prop-files/
$ cd ~/config/prop-files/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个文件名
来存储属性名称的值:touch name
$ touch nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在文件中添加 属性值:
echo "jim" > name
$ echo "jim" > nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 ConfigSource,其中的文件名是属性,文件内容为属性的值:
/subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=~/config/prop-files})/subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=~/config/prop-files})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会生成以下 XML 配置:
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source name="file-props"> <dir path="/etc/config/prop-files"/> </config-source> </subsystem><subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source name="file-props"> <dir path="/etc/config/prop-files"/> </config-source> </subsystem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. 从 ConfigSource 类获取 ConfigSource 复制链接链接已复制到粘贴板!
您可以创建和配置自定义 org.eclipse.microprofile.config.spi.ConfigSource 实施类,以提供配置值的来源。
流程
以下管理 CLI 命令为名为
org.example.MyConfig,该类由名为Source 的实施类创建一个 ConfigSourceorg.example的 JBoss 模块提供。如果要使用
org.example模块中的ConfigSource,请将<module name="org.eclipse.microprofile.config.api"/>依赖项添加到path/to/org/example/main/module.xml文件。/subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})/subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将为
microprofile-config-smallrye子系统生成以下 XML 配置:<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source name="my-config-source"> <class name="org.example.MyConfigSource" module="org.example"/> </config-source> </subsystem><subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source name="my-config-source"> <class name="org.example.MyConfigSource" module="org.example"/> </config-source> </subsystem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
由自定义 org.eclipse.microprofile.config.spi.ConfigSource 实施类提供的属性可用于任何 JBoss EAP 部署。
3.2.4. 从 ConfigSourceProvider 类获取 ConfigSource 配置 复制链接链接已复制到粘贴板!
您可以创建和配置自定义 org.eclipse.microprofile.config.spi.ConfigSourceProvider 实施类,以注册多个 ConfigSource 实例的实施。
流程
创建
config-source-provider:/subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})/subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令为名为
org.example.MyConfigSourceProvider的实现类创建一个config-source-provider,它由名为org.example的 JBoss 模块提供。如果要使用
org.example模块中的 config-source-provider,请将<module name="org.eclipse.microprofile.config.api"/>依赖项添加到path/to/org/example/main/module.xml文件中。此命令为
microprofile-config-smallrye子系统生成以下 XML 配置:<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source-provider name="my-config-source-provider"> <class name="org.example.MyConfigSourceProvider" module="org.example"/> </config-source-provider> </subsystem><subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"> <config-source-provider name="my-config-source-provider"> <class name="org.example.MyConfigSourceProvider" module="org.example"/> </config-source-provider> </subsystem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ConfigSourceProvider 实施提供的属性可用于任何 JBoss EAP 部署。
其他资源
- 有关如何将全局模块添加到 JBoss EAP 服务器的信息,请参阅 JBoss EAP 配置指南中的定义 全局模块。
3.3. MicroProfile 容错配置 复制链接链接已复制到粘贴板!
3.3.1. 添加 MicroProfile 容错扩展 复制链接链接已复制到粘贴板!
作为 JBoss EAP XP 的一部分提供的 MicroProfile 容错扩展包含在 配置中。
standalone-microprofile.xml 和 standalone-microprofile-ha.xml
扩展不包含在标准 standalone.xml 配置中。要使用扩展,您必须手动启用它。
先决条件
- 已安装 EAP XP 包。
流程
使用以下命令添加 MicroProfile 容错扩展:
/extension=org.wildfly.extension.microprofile.fault-tolerance-smallrye:add
/extension=org.wildfly.extension.microprofile.fault-tolerance-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令启用
microprofile-fault-tolerance-smallrye子系统:/subsystem=microprofile-fault-tolerance-smallrye:add
/subsystem=microprofile-fault-tolerance-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理命令重新载入服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. MicroProfile 健康配置 复制链接链接已复制到粘贴板!
3.4.1. 使用管理 CLI 检查健康状况 复制链接链接已复制到粘贴板!
您可以使用管理 CLI 检查系统健康状况。
流程
检查健康状况:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. 使用管理控制台检查健康状况 复制链接链接已复制到粘贴板!
您可以使用管理控制台检查系统运行状况。
检查运行时操作显示健康检查和全局结果作为布尔值。
流程
- 导航到 Runtime 选项卡,再选择 服务器。
- 在 Monitor 列中,点击 MicroProfile Health → View。
3.4.3. 使用 HTTP 端点检查健康状况 复制链接链接已复制到粘贴板!
健康检查自动部署到 JBoss EAP 上的健康上下文中,因此您可以使用 HTTP 端点来获取当前的健康状况。
/health 端点的默认地址可从管理接口访问,即 http://127.0.0.1:9990/health。
流程
要使用 HTTP 端点获取服务器的当前健康状况,请使用以下 URL:
http://<host>:<port>/health
http://<host>:<port>/healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问此上下文时,将以 JSON 格式显示健康检查,指示服务器是否正常运行。
3.4.4. 为 MicroProfile 健康启用身份验证 复制链接链接已复制到粘贴板!
您可以将 健康 上下文配置为需要进行身份验证才能访问。
流程
在
microprofile属性设为-health-smallrye 子系统上,将 security-enabledtrue。/subsystem=microprofile-health-smallrye:write-attribute(name=security-enabled,value=true)
/subsystem=microprofile-health-smallrye:write-attribute(name=security-enabled,value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器以使更改生效。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
访问 /health 端点的任何后续尝试都会触发身份验证提示符。
3.4.5. 决定服务器健康和就绪度的就绪度探测 复制链接链接已复制到粘贴板!
JBoss EAP XP 3.0.0 支持三种就绪度探测,以确定服务器健康和就绪度。
-
server-status- 当 server-state运行时返回UP。 -
boot-errors- 当探测检测到没有引导错误时返回UP。 -
deployment-status- 当所有部署的状态为OK时,返回UP。
这些就绪度探测会被默认启用。您可以使用 MicroProfile Config property mp.health.disable-default-procedures 来禁用探测。
以下示例演示了将三个探测与 检查操作结合使用 :
3.4.6. 未定义探测时的全局状态 复制链接链接已复制到粘贴板!
:empty-readiness-checks-status 和 :empty-liveness-checks-status 管理属性在未定义就绪 度 探测时指定全局状态。
或 存活度
这些属性允许应用报告"DOWN",直到探测验证应用程序是否已就绪或存活为止。默认情况下,应用程序报告"UP"。
如果没有定义
就绪度探测,:empty-readiness-checks-status属性指定就绪度探测的全局状态:/subsystem=microprofile-health-smallrye:read-attribute(name=empty-readiness-checks-status) { "outcome" => "success", "result" => expression "${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}" }/subsystem=microprofile-health-smallrye:read-attribute(name=empty-readiness-checks-status) { "outcome" => "success", "result" => expression "${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有定义
存活度探测,:empty-liveness-checks-status属性指定存活度探测的全局状态:/subsystem=microprofile-health-smallrye:read-attribute(name=empty-liveness-checks-status) { "outcome" => "success", "result" => expression "${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}" }/subsystem=microprofile-health-smallrye:read-attribute(name=empty-liveness-checks-status) { "outcome" => "success", "result" => expression "${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
就绪度和存活度探测的/healthHTTP 端点和:check操作也会考虑这些属性。
您还可以修改这些属性,如下例所示:
3.5. MicroProfile JWT 配置 复制链接链接已复制到粘贴板!
3.5.1. 启用 microprofile-jwt-smallrye 子系统 复制链接链接已复制到粘贴板!
MicroProfile JWT 集成由 microprofile-jwt-smallrye 子系统提供,包含在默认配置中。如果默认配置中没有子系统,您可以按照如下所示进行添加:
先决条件
- 已安装 EAP XP。
流程
在 JBoss EAP 中启用 MicroProfile JWT smallrye 扩展:
/extension=org.wildfly.extension.microprofile.jwt-smallrye:add
/extension=org.wildfly.extension.microprofile.jwt-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
microprofile-jwt-smallrye子系统:/subsystem=microprofile-jwt-smallrye:add
/subsystem=microprofile-jwt-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
The microprofile-jwt-smallrye 子系统已启用。
3.6. MicroProfile 指标管理 复制链接链接已复制到粘贴板!
3.6.1. 管理界面中提供的指标 复制链接链接已复制到粘贴板!
JBoss EAP 子系统指标以 Prometheus 格式公开。
指标在 JBoss EAP 管理界面中自动可用,包含以下上下文:
-
/metrics/- 包含 MicroProfile 3.0 规范中指定的指标。 -
/metrics/vendor- 包含特定于供应商的指标,如内存池。 -
/metrics/application- 包含来自使用 MicroProfile 指标 API 的部署和子系统的指标。
指标名称基于子系统和属性名称。例如,undertow 子系统为应用部署中的每个 servlet 公开指标属性 request-count。此指标的名称为 jboss_undertow_request_count。前缀 jboss 将 JBoss EAP 识别为指标的来源。
3.6.2. 使用 HTTP 端点检查指标 复制链接链接已复制到粘贴板!
使用 HTTP 端点,检查 JBoss EAP 管理接口上可用的指标。
流程
使用 curl 命令:
curl -v http://localhost:9990/metrics | grep -i type
$ curl -v http://localhost:9990/metrics | grep -i typeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.3. 为 MicroProfile 指标 HTTP 端点启用身份验证 复制链接链接已复制到粘贴板!
配置 指标 上下文,以要求用户获得授权才能访问该上下文。此配置扩展至指标上下文的所有子 上下文。
流程
在
microprofile属性设为-metrics-smallrye 子系统上,将 security-enabledtrue。/subsystem=microprofile-metrics-smallrye:write-attribute(name=security-enabled,value=true)
/subsystem=microprofile-metrics-smallrye:write-attribute(name=security-enabled,value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器以使更改生效。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
之后任何访问 指标 端点的尝试都会产生身份验证提示符。
3.6.4. 获取 web 服务的请求数 复制链接链接已复制到粘贴板!
获取公开其请求数指标的 Web 服务的请求数。
以下流程使用 helloworld-rs faststart 作为 Web 服务来获取请求计数。此快速入门可从 下载快速入门来源: jboss-eap-quickstarts。
先决条件
- Web 服务公开请求数。
流程
为
undertow子系统启用统计信息:在启用了统计信息的情况下启动单机服务器:
./standalone.sh -Dwildfly.statistics-enabled=true
$ ./standalone.sh -Dwildfly.statistics-enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于已经运行的服务器,启用
undertow子系统的统计信息:/subsystem=undertow:write-attribute(name=statistics-enabled,value=true)
/subsystem=undertow:write-attribute(name=statistics-enabled,value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
部署
helloworld-rs快速入门:在快速启动的根目录中,使用 Maven 部署 Web 应用程序:
mvn clean install wildfly:deploy
$ mvn clean install wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
curl命令在 CLI 中查询 HTTP 端点,并为request_count过滤:curl -v http://localhost:9990/metrics | grep request_count
$ curl -v http://localhost:9990/metrics | grep request_countCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
jboss_undertow_request_count_total{server="default-server",http_listener="default",} 0.0jboss_undertow_request_count_total{server="default-server",http_listener="default",} 0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返回的属性值为
0.0。- 在 Web 浏览器中访问位于 http://localhost:8080/helloworld-rs/ 的快速入门,再单击任何链接。
再次从 CLI 查询 HTTP 端点:
curl -v http://localhost:9990/metrics | grep request_count
$ curl -v http://localhost:9990/metrics | grep request_countCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
jboss_undertow_request_count_total{server="default-server",http_listener="default",} 1.0jboss_undertow_request_count_total{server="default-server",http_listener="default",} 1.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该值更新至
1.0。重复最后两个步骤,以验证请求数是否已更新。
3.7. MicroProfile OpenAPI 管理 复制链接链接已复制到粘贴板!
3.7.1. 启用 MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
The microprofile-openapi-smallrye 子系统在 standalone-microprofile.xml 配置中提供。但是,JBoss EAP XP 默认使用 standalone.xml。您必须在 standalone.xml 中包含子系统才能使用它。
或者,您也可遵循 使用 MicroProfile 子系统和扩展来更新 standalone.xml 配置文件的步骤。
流程
在 JBoss EAP 中启用 MicroProfile OpenAPI smallrye 扩展:
/extension=org.wildfly.extension.microprofile.openapi-smallrye:add()
/extension=org.wildfly.extension.microprofile.openapi-smallrye:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令启用
microprofile-openapi-smallrye子系统:/subsystem=microprofile-openapi-smallrye:add()
/subsystem=microprofile-openapi-smallrye:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
启用 The microprofile-openapi-smallrye 子系统。
3.7.2. 使用 Accept HTTP 标头请求 MicroProfile OpenAPI 文档 复制链接链接已复制到粘贴板!
使用 Accept HTTP 标头从部署请求 MicroProfile OpenAPI 文档(JSON 格式)。
默认情况下,OpenAPI 端点返回 YAML 文档。
先决条件
- 正在查询的部署配置为返回 MicroProfile OpenAPI 文档。
流程
发出以下
curl命令以查询部署的 /openapi端点:curl -v -H'Accept: application/json' http://localhost:8080/openapi < HTTP/1.1 200 OK ... {"openapi": "3.0.1" ... }$ curl -v -H'Accept: application/json' http://localhost:8080/openapi < HTTP/1.1 200 OK ... {"openapi": "3.0.1" ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署的 URL 和端口替换 http://localhost:8080。
Accept 标头指示将使用
application/json字符串返回 JSON 文档。
3.7.3. 使用 HTTP 参数请求 MicroProfile OpenAPI 文档 复制链接链接已复制到粘贴板!
使用 HTTP 请求中的查询参数,从部署请求请求 MicroProfile OpenAPI 文档(JSON 格式)。
默认情况下,OpenAPI 端点返回 YAML 文档。
先决条件
- 正在查询的部署配置为返回 MicroProfile OpenAPI 文档。
流程
发出以下
curl命令以查询部署的 /openapi端点:curl -v http://localhost:8080/openapi?format=JSON < HTTP/1.1 200 OK ...
$ curl -v http://localhost:8080/openapi?format=JSON < HTTP/1.1 200 OK ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署的 URL 和端口替换 http://localhost:8080。
HTTP 参数
format=JSON表示将返回 JSON 文档。
3.7.4. 配置 JBoss EAP 以提供静态 OpenAPI 文档 复制链接链接已复制到粘贴板!
配置 JBoss EAP 以提供静态 OpenAPI 文档,描述主机的 REST 服务。
当 JBoss EAP 配置为提供静态 OpenAPI 文档时,将在任何 Jakarta RESTful Web 服务和 MicroProfile OpenAPI 注释之前处理静态 OpenAPI 文档。
在生产环境中,在提供静态文档时禁用注释处理。禁用注解处理可确保客户端可以使用不可变和版本化的 API 合同。
流程
在应用程序源树中创建目录:
mkdir APPLICATION_ROOT/src/main/webapp/META-INF
$ mkdir APPLICATION_ROOT/src/main/webapp/META-INFCopy to Clipboard Copied! Toggle word wrap Toggle overflow APPLICATION_ROOT 是含有应用的
pom.xml配置文件的目录。查询 OpenAPI 端点,将输出重定向到文件中:
curl http://localhost:8080/openapi?format=JSON > src/main/webapp/META-INF/openapi.json
$ curl http://localhost:8080/openapi?format=JSON > src/main/webapp/META-INF/openapi.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,端点提供 YAML 文档
format=JSON指定返回 JSON 文档。配置应用程序,以便在处理 OpenAPI 文档模型时跳过注解扫描:
echo "mp.openapi.scan.disable=true" > APPLICATION_ROOT/src/main/webapp/META-INF/microprofile-config.properties
$ echo "mp.openapi.scan.disable=true" > APPLICATION_ROOT/src/main/webapp/META-INF/microprofile-config.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新构建应用程序:
mvn clean install
$ mvn clean installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令再次部署应用程序:
取消部署应用程序:
undeploy microprofile-openapi.war
undeploy microprofile-openapi.warCopy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用程序:
deploy APPLICATION_ROOT/target/microprofile-openapi.war
deploy APPLICATION_ROOT/target/microprofile-openapi.warCopy to Clipboard Copied! Toggle word wrap Toggle overflow
JBoss EAP 现在在 OpenAPI 端点上提供静态 OpenAPI 文档。
3.7.5. 禁用 microprofile-openapi-smallrye 复制链接链接已复制到粘贴板!
您可以使用管理 CLI 在 JBoss EAP XP 中禁用 microprofile-openapi-smallrye 子系统。
流程
禁用
microprofile-openapi-smallrye子系统:/subsystem=microprofile-openapi-smallrye:remove()
/subsystem=microprofile-openapi-smallrye:remove()Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.8. 单机服务器配置 复制链接链接已复制到粘贴板!
3.8.1. 单机服务器配置文件 复制链接链接已复制到粘贴板!
JBoss EAP XP 包含其他单机服务器配置文件 standalone-microprofile.xml 和 standalone-microprofile-ha.xml。
JBoss EAP 附带的标准配置文件保持不变。请注意,JBoss EAP XP 3.0.0 不支持使用 domain.xml 文件或域模式。
| 配置文件 | 用途 | 包括的功能 | 排除的功能 |
|---|---|---|---|
|
| 这是启动单机服务器时使用的默认配置。 | 包含有关服务器的信息,包括子系统、网络、部署、套接字绑定和其他可配置的详细信息。 | 排除消息传递或高可用性所需的子系统。 |
|
| 此配置文件支持使用 MicroProfile 的应用。 | 包含有关服务器的信息,包括子系统、网络、部署、套接字绑定和其他可配置的详细信息。 | 排除以下功能:
|
|
|
包含默认子系统,并添加 | 排除消息传递所需的子系统. | |
|
| 此独立文件支持使用 MicroProfile 的应用。 |
除了默认的子系统外,还包括 | 排除消息传递所需的子系统. |
|
|
除了默认的子系统外,还包括 | ||
|
| 支持每一种可能的子系统. | 包括消息传递子系统和高可用性子系统,以及默认子系统。 | |
|
| 支持使用内置 mod_cluster 前端负载平衡器对其他 JBoss EAP 实例进行负载平衡所必需的最小子系统。 |
默认情况下,将 JBoss EAP 作为单机服务器启动使用 standalone.xml 文件。要使用单机 MicroProfile 配置启动 JBoss EAP,请使用 -c 参数:例如,
EAP_HOME/bin/standalone.sh -c=standalone-microprofile.xml
$ EAP_HOME/bin/standalone.sh -c=standalone-microprofile.xml
其它资源
3.8.2. 使用 MicroProfile 子系统和扩展更新独立配置 复制链接链接已复制到粘贴板!
您可以使用 docs/examples/enable-microprofile.cli 脚本通过 MicroProfile 子系统和扩展来更新标准单机服务器配置文件。enable-microprofile.cli 脚本旨在作为示例脚本,用于更新标准单机服务器配置文件,而非自定义配置。
enable-microprofile.cli 脚本修改现有的单机服务器配置,并在独立配置文件中添加下列 MicroProfile 子系统和扩展(如果它们不存在):
-
microprofile-openapi-smallrye -
microprofile-jwt-smallrye -
microprofile-fault-tolerance-smallrye
enable-microprofile.cli 脚本输出修改的高级描述。该配置使用 elytron 子系统进行保护。security 子系统(若存在)将从配置中删除。
先决条件
- 已安装 JBoss EAP XP。
流程
运行以下 CLI 脚本以更新默认的
standalone.xml服务器配置文件:EAP_HOME/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli
$ EAP_HOME/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令选择默认
standalone.xml服务器配置文件以外的单机服务器配置:EAP_HOME/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli -Dconfig=<standalone-full.xml|standalone-ha.xml|standalone-full-ha.xml>
$ EAP_HOME/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli -Dconfig=<standalone-full.xml|standalone-ha.xml|standalone-full-ha.xml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 指定的配置文件现在包含 MicroProfile 子系统和扩展。
第 4 章 为 JBoss EAP 开发 MicroProfile 应用 复制链接链接已复制到粘贴板!
4.1. Maven 和 JBoss EAP MicroProfile Maven 存储库 复制链接链接已复制到粘贴板!
4.1.1. 下载 JBoss EAP MicroProfile Maven 存储库补丁作为存档文件 复制链接链接已复制到粘贴板!
每当为 JBoss EAP 发布 MicroProfile 扩展包时,都会为 JBoss EAP MicroProfile Maven 存储库提供相应的补丁。此补丁作为增量存档文件提供,提取到现有的红帽 JBoss 企业应用平台 7.4.0.GA Maven 存储库中。增量归档文件不会覆盖或删除任何现有的文件,因此无需回滚。
先决条件
- 您已在 红帽客户门户网站中设置了帐户。
流程
- 打开浏览器并登录 红帽客户门户。
- 从页面顶部的菜单中选择 Downloads。
- 在列表中找到 红帽 JBoss 企业应用平台 条目并进行选择。
- 从 产品 下拉列表中,选择 JBoss EAP XP。
- 从 Version 下拉列表中,选择 2.0.0。
- 单击 Releases 选项卡。
- 在列表中找到 JBoss EAP XP 3.0.0 Incremental Maven Repository,然后单击 Download。
- 将归档文件保存到您的本地目录。
其它资源
- 若要了解更多有关 JBoss EAP Maven 存储库的信息,请参阅 JBoss EAP 开发指南中的关于 Maven 存储库。
4.1.2. 在您的本地系统中应用 JBoss EAP MicroProfile Maven 存储库补丁 复制链接链接已复制到粘贴板!
您可以在本地文件系统上安装 JBoss EAP MicroProfile Maven 存储库补丁。
当您以增量归档文件的形式将补丁应用到存储库中时,新文件将添加到此存储库。增量归档文件不会覆盖或删除存储库中的任何现有文件,因此无需回滚。
先决条件
您已 下载并安装了 本地系统上的 Red Hat JBoss Enterprise Application Platform 7.4.0.GA Maven 存储库。
- 检查您是否已在本地系统中安装了红帽 JBoss 企业应用平台 7.4 Maven 存储库的这一次要版本。
- 您已下载了您本地系统上的 JBoss EAP XP 2.0.0 增加 Maven 存储库。
流程
-
查找红帽 JBoss 企业应用平台 7.4.0.GA Maven 存储库的路径。例如,
/path/to/repo/jboss-eap-7.3.0.GA-maven-repository/maven-repository/。 将下载的 JBoss EAP XP 2.0.0 Incremental Maven 存储库直接提取到红帽 JBoss 企业应用平台 7.4.0.GA Maven 存储库的 目录中。例如,打开一个终端并运行以下命令,替换 Red Hat JBoss Enterprise Application Platform 7.4.0.GA Maven 存储库路径的值:
unzip -o jboss-eap-xp-3.0.0-incremental-maven-repository.zip -d EAP_MAVEN_REPOSITORY_PATH
$ unzip -o jboss-eap-xp-3.0.0-incremental-maven-repository.zip -d EAP_MAVEN_REPOSITORY_PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
EAP_MAVEN_REPOSITORY_PATH 指向 jboss-eap-7.3.0.GA-maven-repository。例如,此流程演示了路径 /path/to/repo/jboss-eap-7.3.0.GA-maven-repository/ 的使用。
将 JBoss EAP XP Incremental Maven 存储库提取到红帽 JBoss 企业应用平台 7.4.0.GA Maven 存储库后,存储库名称将变为 JBoss EAP MicroProfile Maven 存储库。
其它资源
- 若要确定 JBoss EAP Maven 存储库的 URL,请参阅 JBoss EAP 开发指南中 确定 JBoss EAP Maven 存储库的 URL。
4.1.3. 支持的 JBoss EAP MicroProfile BOM 复制链接链接已复制到粘贴板!
JBoss EAP XP 3.0.0 包括 JBoss EAP MicroProfile BOM。此 BOM 名为 jboss-eap-xp-microprofile,其用例支持 JBoss EAP MicroProfile API。
| BOM Artifact ID | 使用案例 |
|---|---|
| jboss-eap-xp-microprofile |
此 BOM |
4.1.4. 使用 JBoss EAP MicroProfile Maven 存储库 复制链接链接已复制到粘贴板!
安装红帽 JBoss 企业应用平台 7.4.0.GA Maven 存储库并应用 JBoss EAP XP Incremental Maven 存储库后,您可以访问 jboss-eap-xp-microprofile BOM。然后,存储库名称变为 JBoss EAP MicroProfile Maven 存储库。BOM 在 JBoss EAP XP 增加 Maven 存储库中提供。
您必须将以下之一配置为使用 JBoss EAP MicroProfile Maven 存储库:
- Maven 全局或用户设置
- 项目的 POM 文件
与共享服务器上的存储库管理器或存储库一起使用的 Maven 设置提供更好的项目的控制和可管理性。
您可以使用替代镜像将特定存储库的所有查找请求重定向到存储库管理器,而无需更改项目文件。
通过修改 POM 文件来配置 JBoss EAP MicroProfile Maven 存储库,覆盖配置的项目的全局和用户 Maven 设置。
先决条件
- 您已在本地系统上安装了红帽 JBoss 企业应用平台 7.4 Maven 存储库,并且已将 JBoss EAP XP 增加 Maven 存储库应用到该存储库。
流程
- 选择配置方法并配置 JBoss EAP MicroProfile Maven 存储库。
在您配置了 JBoss EAP MicroProfile Maven 存储库后,将
jboss-eap-xp-microprofileBOM 添加到 POM 项目。以下示例演示了如何在pom.xml文件的<dependencyManagement>部分中配置 BOM:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您没有为
pom.xml文件中的type元素指定值,Maven 为该元素指定一个jar值。
4.2. MicroProfile 配置开发 复制链接链接已复制到粘贴板!
4.2.1. 为 MicroProfile 配置创建 Maven 项目 复制链接链接已复制到粘贴板!
创建一个 Maven 项目,其中包含必要的依赖项,以及用于创建 MicroProfile 配置应用的目录结构。
先决条件
- 已安装 Maven。
流程
设置 Maven 项目。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将为项目和
pom.xml配置文件创建目录结构。要让 POM 文件自动管理
jboss-eap-xp-microprofileBOM 中的 MicroProfile Config 构件和 MicroProfile REST 客户端构件的版本,请将 BOM 导入到项目 POM 文件的<dependencyManagement> 部分中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 MicroProfile Config 构件和 MicroProfile REST 客户端构件和其他依赖项(由 BOM 管理)添加到 POM 文件的
<dependency> 部分。以下示例演示了将 MicroProfile Config 和 MicroProfile REST 客户端依赖项添加到该文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2. 在应用中使用 MicroProfile Config 属性 复制链接链接已复制到粘贴板!
创建使用配置的 ConfigSource 的应用。
先决条件
- JBoss EAP 中启用了 MicroProfile Config。
- 安装了最新的 POM。
- Maven 项目已配置为创建 MicroProfile 配置应用。
流程
创建用于存储类文件的目录:
mkdir -p APPLICATION_ROOT/src/main/java/com/example/microprofile/config/
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/microprofile/config/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。进入新目录:
cd APPLICATION_ROOT/src/main/java/com/example/microprofile/config/
$ cd APPLICATION_ROOT/src/main/java/com/example/microprofile/config/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在此目录中创建此流程中描述的所有类文件。
创建名为
HelloApplication.java的类文件,其包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此类将应用定义为 Jakarta RESTful Web Services 应用。
创建名为
HelloService.java的类文件,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
HelloWorld.java的类文件,其包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- MicroProfile Config 属性通过注释
@ConfigProperty(name="name", defaultValue="jim")注入到类中。如果没有配置ConfigSource,则返回 valuejim。
在
src/main/webapp/WEB-INF/ 目录中创建一个名为文件:beans.xml的空touch APPLICATION_ROOT/src/main/webapp/WEB-INF/beans.xml
$ touch APPLICATION_ROOT/src/main/webapp/WEB-INF/beans.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。进入应用程序的根目录:
cd APPLICATION_ROOT
$ cd APPLICATION_ROOTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。构建项目:
mvn clean install wildfly:deploy
$ mvn clean install wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 测试输出:
curl http://localhost:8080/microprofile-config/config/json
$ curl http://localhost:8080/microprofile-config/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是预期的输出:
{"result":"Hello jim"}{"result":"Hello jim"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. MicroProfile 容错应用开发 复制链接链接已复制到粘贴板!
4.3.1. 添加 MicroProfile 容错扩展 复制链接链接已复制到粘贴板!
作为 JBoss EAP XP 的一部分提供的 MicroProfile 容错扩展包含在 配置中。
standalone-microprofile.xml 和 standalone-microprofile-ha.xml
扩展不包含在标准 standalone.xml 配置中。要使用扩展,您必须手动启用它。
先决条件
- 已安装 EAP XP 包。
流程
使用以下命令添加 MicroProfile 容错扩展:
/extension=org.wildfly.extension.microprofile.fault-tolerance-smallrye:add
/extension=org.wildfly.extension.microprofile.fault-tolerance-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令启用
microprofile-fault-tolerance-smallrye子系统:/subsystem=microprofile-fault-tolerance-smallrye:add
/subsystem=microprofile-fault-tolerance-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理命令重新载入服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. 为 MicroProfile 容错配置 Maven 项目 复制链接链接已复制到粘贴板!
创建一个 Maven 项目,其中包含必要的依赖项,以及用于创建 MicroProfile 容错应用的目录结构。
先决条件
- 已安装 Maven。
流程
设置 Maven 项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令可为项目和
pom.xml配置文件创建目录结构。要让 POM 文件自动管理
jboss-eap-xp-microprofileBOM 中的 MicroProfile 容错构件的版本,请将 BOM 导入到项目 POM 文件的<dependencyManagement> 部分中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 ${version.microprofile.bom} 替换为安装的 BOM 版本。
将由 BOM 管理的 MicroProfile Fault Tolerance 构件添加到 POM 文件的
<dependency> 部分。以下示例演示了将 MicroProfile 容错依赖项添加到该文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 创建容错应用程序 复制链接链接已复制到粘贴板!
创建容错应用,实现容错模式的重试、超时和回退模式。
先决条件
- 已配置了 Maven 依赖项。
流程
创建用于存储类文件的目录:
mkdir -p APPLICATION_ROOT/src/main/java/com/example/microprofile/faulttolerance
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/microprofile/faulttoleranceCopy to Clipboard Copied! Toggle word wrap Toggle overflow APPLICATION_ROOT 是含有应用的
pom.xml配置文件的目录。进入新目录:
cd APPLICATION_ROOT/src/main/java/com/example/microprofile/faulttolerance
$ cd APPLICATION_ROOT/src/main/java/com/example/microprofile/faulttoleranceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于以下步骤,请在新目录中创建所有类文件。
创建一个代表 Coffee.java 的
Coffee.java的简单实体,其中包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的类文件
CoffeeApplication.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 Jakarta 上下文和依赖注入 Bean 作为
CoffeeRepositoryService.java,包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的类文件
CoffeeResource.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入应用程序的根目录:
cd APPLICATION_ROOT
$ cd APPLICATION_ROOTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 Maven 命令构建应用程序:
mvn clean install wildfly:deploy
$ mvn clean install wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问位于
http://localhost:8080/microprofile-fault-tolerance/coffee的应用。
其它资源
-
有关容错应用的详细示例,包括测试应用的容错性故障,请参阅
microprofile-fault-tolerancequickstart。
4.4. MicroProfile 健康开发 复制链接链接已复制到粘贴板!
4.4.1. 自定义健康检查示例 复制链接链接已复制到粘贴板!
microprofile-health-smallrye 子系统提供的默认实施将执行基本的健康检查。如需更多详细信息,可以包括服务器或应用程序状态上的自定义健康检查。在运行时会自动发现和调用任何包含 org.eclipse.microprofile.health.Liveness 注解 或类级别的 org.eclipse.microprofile.health.Readiness 注解的任何 Jakarta Contexts 和 Dependency Injection bean。
以下示例演示了如何创建返回 UP 状态的健康检查的新实施。
部署后,任何后续健康检查查询都会包括自定义检查,如下例中所示。
您可以使用以下命令进行存活度和就绪度检查:
-
/subsystem=microprofile-health-smallrye:check-live -
/subsystem=microprofile-health-smallrye:check-ready
4.4.2. @Liveness 注释示例 复制链接链接已复制到粘贴板!
以下是在应用中使用 @Liveness 注释的示例:
4.4.3. @Readiness 注释示例 复制链接链接已复制到粘贴板!
以下示例演示了如何检查与数据库的连接:如果数据库停机,就绪度检查报告错误。
4.5. MicroProfile JWT 应用程序开发 复制链接链接已复制到粘贴板!
4.5.1. 启用 microprofile-jwt-smallrye 子系统 复制链接链接已复制到粘贴板!
MicroProfile JWT 集成由 microprofile-jwt-smallrye 子系统提供,包含在默认配置中。如果默认配置中没有子系统,您可以按照如下所示进行添加:
先决条件
- 已安装 EAP XP。
流程
在 JBoss EAP 中启用 MicroProfile JWT smallrye 扩展:
/extension=org.wildfly.extension.microprofile.jwt-smallrye:add
/extension=org.wildfly.extension.microprofile.jwt-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
microprofile-jwt-smallrye子系统:/subsystem=microprofile-jwt-smallrye:add
/subsystem=microprofile-jwt-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
The microprofile-jwt-smallrye 子系统已启用。
4.5.2. 配置 Maven 项目以开发 JWT 应用程序 复制链接链接已复制到粘贴板!
创建一个 Maven 项目,其中包含必要的依赖项和用于开发 JWT 应用的目录结构。
先决条件
- 已安装 Maven。
-
启用了 MicroProfile-jwt-smallrye子系统。
流程
设置 maven 项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令可为项目和
pom.xml配置文件创建目录结构。要让 POM 文件自动管理
jboss-eap-xp-microprofileBOM 中的 MicroProfile JWT 构件的版本,请将 BOM 导入到项目 POM 文件的<dependencyManagement> 部分中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 ${version.microprofile.bom} 替换为安装的 BOM 版本。
将由 BOM 管理的 MicroProfile JWT 构件添加到 POM 文件的
<dependency> 部分。以下示例演示了将 MicroProfile JWT 依赖项添加到该文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.3. 使用 MicroProfile JWT 创建应用 复制链接链接已复制到粘贴板!
创建应用,以基于 JWT 令牌对请求进行身份验证,并根据令牌持有者的身份实施授权。
以下流程提供了用于生成令牌的示例代码。在生产环境中,请使用红帽单点登录(SSO)等身份提供程序。
先决条件
- Maven 项目配置了正确的依赖项。
流程
创建令牌生成器。
此步骤用作参考。在生产环境中,请使用红帽 SSO 等身份提供程序。
创建生成器实用程序的令牌目录
src/test/java目录并导航到此目录:mkdir -p src/test/java cd src/test/java
$ mkdir -p src/test/java $ cd src/test/javaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的类文件
TokenUtil.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
src/main/webapp/WEB-INF目录中创建web.xml文件,其中包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的类文件
SampleEndPoint.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注释有
@Path的方法是 Jakarta RESTful Web 服务端点。注释
@Claim定义 JWT 声明。创建类文件
App.java以启用 Jakarta RESTful Web 服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注释
@LoginConfig(authMethod="MP-JWT", realmName="MP JWT Realm")在部署期间启用 JWT RBAC。使用以下 Maven 命令编译应用程序:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用令牌生成器实用程序生成 JWT 令牌:
mvn exec:java -Dexec.mainClass=org.wildfly.quickstarts.mpjwt.TokenUtil -Dexec.classpathScope=test -Dexec.args="testUser 2017-09-15 Echoer Subscriber"
$ mvn exec:java -Dexec.mainClass=org.wildfly.quickstarts.mpjwt.TokenUtil -Dexec.classpathScope=test -Dexec.args="testUser 2017-09-15 Echoer Subscriber"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 Maven 命令构建和部署应用程序:
mvn package wildfly:deploy
$ mvn package wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 测试应用。
使用 bearer 令牌调用
Sample/subscription端点:curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/subscription
$ curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/subscriptionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 调用
Sample/birthday端点:curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/birthday
$ curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/birthdayCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. MicroProfile 指标开发 复制链接链接已复制到粘贴板!
4.6.1. 创建 MicroProfile 指标应用 复制链接链接已复制到粘贴板!
创建一个应用,它将向应用发出的请求数返回。
流程
创建包含以下内容的类文件
HelloService.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的类文件
HelloWorld.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
pom.xml文件,使其包含以下依赖项:<dependency> <groupId>org.eclipse.microprofile.metrics</groupId> <artifactId>microprofile-metrics-api</artifactId> <scope>provided</scope> </dependency><dependency> <groupId>org.eclipse.microprofile.metrics</groupId> <artifactId>microprofile-metrics-api</artifactId> <scope>provided</scope> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 Maven 命令构建应用程序:
mvn clean install wildfly:deploy
$ mvn clean install wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 测试指标:
在 CLI 中运行以下命令:
curl -v http://localhost:9990/metrics | grep request_count | grep helloworld-rs-metrics
$ curl -v http://localhost:9990/metrics | grep request_count | grep helloworld-rs-metricsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
jboss_undertow_request_count_total{deployment="helloworld-rs-metrics.war",servlet="org.jboss.as.quickstarts.rshelloworld.JAXActivator",subdeployment="helloworld-rs-metrics.war",microprofile_scope="vendor"} 0.0jboss_undertow_request_count_total{deployment="helloworld-rs-metrics.war",servlet="org.jboss.as.quickstarts.rshelloworld.JAXActivator",subdeployment="helloworld-rs-metrics.war",microprofile_scope="vendor"} 0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在浏览器中,导航到 URL http://localhost:8080/helloworld-rs/rest/json
在 CLI 中重新执行以下命令:
curl -v http://localhost:9990/metrics | grep request_count | grep helloworld-rs-metrics
$ curl -v http://localhost:9990/metrics | grep request_count | grep helloworld-rs-metricsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
jboss_undertow_request_count_total{deployment="helloworld-rs-metrics.war",servlet="org.jboss.as.quickstarts.rshelloworld.JAXActivator",subdeployment="helloworld-rs-metrics.war",microprofile_scope="vendor"} 1.0jboss_undertow_request_count_total{deployment="helloworld-rs-metrics.war",servlet="org.jboss.as.quickstarts.rshelloworld.JAXActivator",subdeployment="helloworld-rs-metrics.war",microprofile_scope="vendor"} 1.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. 开发 MicroProfile OpenAPI 应用 复制链接链接已复制到粘贴板!
4.7.1. 启用 MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
The microprofile-openapi-smallrye 子系统在 standalone-microprofile.xml 配置中提供。但是,JBoss EAP XP 默认使用 standalone.xml。您必须在 standalone.xml 中包含子系统才能使用它。
或者,您也可遵循 使用 MicroProfile 子系统和扩展来更新 standalone.xml 配置文件的步骤。
流程
在 JBoss EAP 中启用 MicroProfile OpenAPI smallrye 扩展:
/extension=org.wildfly.extension.microprofile.openapi-smallrye:add()
/extension=org.wildfly.extension.microprofile.openapi-smallrye:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令启用
microprofile-openapi-smallrye子系统:/subsystem=microprofile-openapi-smallrye:add()
/subsystem=microprofile-openapi-smallrye:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
启用 The microprofile-openapi-smallrye 子系统。
4.7.2. 为 MicroProfile OpenAPI 配置 Maven 项目 复制链接链接已复制到粘贴板!
创建 Maven 项目,以设置用于创建 MicroProfile OpenAPI 应用的依赖项。
先决条件
- 已安装 Maven。
- 配置了 JBoss EAP Maven 存储库。
流程
初始化项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令可为项目和
pom.xml配置文件创建目录结构。编辑
pom.xml配置文件使其包含:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
pom.xml配置文件和目录结构来创建应用。
4.7.3. 创建 MicroProfile OpenAPI 应用 复制链接链接已复制到粘贴板!
创建返回 OpenAPI v3 文档的应用。
先决条件
- Maven 项目已配置为创建 MicroProfile OpenAPI 应用。
流程
创建用于存储类文件的目录:
mkdir -p APPLICATION_ROOT/src/main/java/com/example/microprofile/openapi/
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/microprofile/openapi/Copy to Clipboard Copied! Toggle word wrap Toggle overflow APPLICATION_ROOT 是含有应用的
pom.xml配置文件的目录。进入新目录:
cd APPLICATION_ROOT/src/main/java/com/example/microprofile/openapi/
$ cd APPLICATION_ROOT/src/main/java/com/example/microprofile/openapi/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必须在此目录中创建下列步骤中的所有类文件。
使用以下内容创建类文件
InventoryApplication.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此类充当应用的 REST 端点。
创建包含以下内容的类文件
Fruit.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的类文件
FruitResource.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入应用程序的根目录:
cd APPLICATION_ROOT
$ cd APPLICATION_ROOTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 Maven 命令构建和部署应用程序:
mvn wildfly:deploy
$ mvn wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 测试应用。
使用
curl访问示例应用程序的 OpenAPI 文档:curl http://localhost:8080/openapi
$ curl http://localhost:8080/openapiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 返回以下输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 如需 MicroProfile SmallRye OpenAPI 中定义的注释列表,请参阅 MicroProfile OpenAPI 注释。
4.7.4. 配置 JBoss EAP 以提供静态 OpenAPI 文档 复制链接链接已复制到粘贴板!
配置 JBoss EAP 以提供静态 OpenAPI 文档,描述主机的 REST 服务。
当 JBoss EAP 配置为提供静态 OpenAPI 文档时,将在任何 Jakarta RESTful Web 服务和 MicroProfile OpenAPI 注释之前处理静态 OpenAPI 文档。
在生产环境中,在提供静态文档时禁用注释处理。禁用注解处理可确保客户端可以使用不可变和版本化的 API 合同。
流程
在应用程序源树中创建目录:
mkdir APPLICATION_ROOT/src/main/webapp/META-INF
$ mkdir APPLICATION_ROOT/src/main/webapp/META-INFCopy to Clipboard Copied! Toggle word wrap Toggle overflow APPLICATION_ROOT 是含有应用的
pom.xml配置文件的目录。查询 OpenAPI 端点,将输出重定向到文件中:
curl http://localhost:8080/openapi?format=JSON > src/main/webapp/META-INF/openapi.json
$ curl http://localhost:8080/openapi?format=JSON > src/main/webapp/META-INF/openapi.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,端点提供 YAML 文档
format=JSON指定返回 JSON 文档。配置应用程序,以便在处理 OpenAPI 文档模型时跳过注解扫描:
echo "mp.openapi.scan.disable=true" > APPLICATION_ROOT/src/main/webapp/META-INF/microprofile-config.properties
$ echo "mp.openapi.scan.disable=true" > APPLICATION_ROOT/src/main/webapp/META-INF/microprofile-config.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新构建应用程序:
mvn clean install
$ mvn clean installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令再次部署应用程序:
取消部署应用程序:
undeploy microprofile-openapi.war
undeploy microprofile-openapi.warCopy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用程序:
deploy APPLICATION_ROOT/target/microprofile-openapi.war
deploy APPLICATION_ROOT/target/microprofile-openapi.warCopy to Clipboard Copied! Toggle word wrap Toggle overflow
JBoss EAP 现在在 OpenAPI 端点上提供静态 OpenAPI 文档。
4.8. MicroProfile REST 客户端开发 复制链接链接已复制到粘贴板!
MicroProfile REST 客户端启用分布式对象通信版本,它也在 CORBA、Java 远程方法调用(RMI)、JBoss 远程方法传递项目和 RESTEasy 中实施。例如,考虑资源:
以下示例演示了如何使用 Jakarta RESTful Web Services-native 来访问 TestResource 类:
Client client = ClientBuilder.newClient();
String response = client.target("http://localhost:8081/test").request().get(String.class);
Client client = ClientBuilder.newClient();
String response = client.target("http://localhost:8081/test").request().get(String.class);
但是,Microprofile REST 客户端通过直接调用 test()方法来支持 更直观的语法,如下例所示:
在前面的示例中,让 TestResource 类的调用 在使用 类时变得更容易,如调用 TestResource Intfservice.test() 所示。
以下示例是 TestResourceIntf 类的更详细版本:
调用 service.test("p", "q", "e") 方法会产生 HTTP 信息,如下例所示:
4.8.2. MicroProfile REST 客户端中的提供程序编程注册 复制链接链接已复制到粘贴板!
借助 MicroProfile REST 客户端,您可以通过注册提供程序来配置客户端环境。例如:
TestResourceIntf service = RestClientBuilder.newBuilder()
.baseUrl(http://localhost:8081/))
.register(MyClientResponseFilter.class)
.register(MyMessageBodyReader.class)
.build(TestResourceIntf.class);
TestResourceIntf service = RestClientBuilder.newBuilder()
.baseUrl(http://localhost:8081/))
.register(MyClientResponseFilter.class)
.register(MyMessageBodyReader.class)
.build(TestResourceIntf.class);
4.8.3. 在 MicroProfile REST 客户端中声明提供程序注册 复制链接链接已复制到粘贴板!
使用 MicroProfile REST 客户端将 org.eclipse.microprofile.rest.client.annotation.RegisterProvider 注释添加到目标接口,如以下示例所示:
使用注释 声明 MyClientResponseFilter 类和 MyMessageBodyReader 类无需调用 RestClientBuilder.register() 方法。
4.8.4. MicroProfile REST 客户端中的标头声明规格 复制链接链接已复制到粘贴板!
您可以使用以下方法为 HTTP 请求指定标头:
- 通过标注其中一个资源方法参数:
-
声明使用
org.eclipse.microprofile.rest.client.annotation.ClientHeaderParam注释。
以下示例演示了通过使用注释 @HeaderParam 为其中一个资源方法参数添加注解来设置标头:
@POST @Produces(MediaType.TEXT_PLAIN) @Consumes(MediaType.TEXT_PLAIN) String contentLang(@HeaderParam(HttpHeaders.CONTENT_LANGUAGE) String contentLanguage, String subject);
@POST
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.TEXT_PLAIN)
String contentLang(@HeaderParam(HttpHeaders.CONTENT_LANGUAGE) String contentLanguage, String subject);
以下示例演示了使用 org.eclipse.microprofile.rest.client.annotation.ClientHeaderParam 注释设置标头:
4.8.5. MicroProfile REST 客户端中的 ResponseExceptionMapper 复制链接链接已复制到粘贴板!
org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper 类是 javax.ws.rs.ext.ExceptionMapper 类的客户端一侧,它在 Jakarta RESTful Web Services 中定义。ExceptionMapper.toResponse() 方法将服务器侧处理期间引发的 Exception 类转变为 Response 类。ResponseExceptionMapper.toThrowable() 方法将客户端上收到的 Response 类和 HTTP 错误状态转换为 Exception 类。
您可以以编程或声明方式注册 ResponseExceptionMapper 类。如果没有注册的 ResponseExceptionMapper 类,默认的 ResponseExceptionMapper 类会将任何响应 映射到 一个 WebApplicationException 类。
4.8.6. 使用 MicroProfile REST 客户端进行上下文依赖项注入 复制链接链接已复制到粘贴板!
利用 MicroProfile REST 客户端,您必须通过 @RegisterRestClient 类为作为 Jakarta 上下文和依赖项注入(Jakarta 上下文和依赖注入) bean 标注任何接口。例如:
此处,MicroProfile REST 客户端实施为 TestDataBase 类服务创建一个客户端,让 TestResourceImpl 类能够轻松访问。但是,它不包括有关 TestDataBase 类实施路径的信息。此信息可以由可选的 @RegisterProvider 参数 baseUri 提供:
这表示您可以访问 TestDataBase 的实现,地址 为 https://localhost:8080/webapp。您还可以使用 MicroProfile 配置在外部提供信息:
<fully qualified name of TestDataBase>/mp-rest/url=<URL>
<fully qualified name of TestDataBase>/mp-rest/url=<URL>
例如,以下属性表示您可以访问位于 https://localhost:8080/webapp 的 com.bluemondiamond.TestDatabase 类的实施:
com.bluemonkeydiamond.TestDatabase/mp-rest/url=https://localhost:8080/webapp
com.bluemonkeydiamond.TestDatabase/mp-rest/url=https://localhost:8080/webapp
您可以向 Jakarta Contexts 和 Dependency Injection 客户端提供许多其他属性。例如,com.mycompany.remoteServices.MyServiceClient/mp-rest/providers,以逗号分隔的完全限定提供程序类名称列表,包含在客户端中。
第 5 章 在 OpenShift 镜像上构建并运行 JBoss EAP XP 的微服务应用程序 复制链接链接已复制到粘贴板!
您可以在 JBoss EAP XP 的 OpenShift 镜像上构建并运行微服务应用。
JBoss EAP XP 仅支持在 OpenShift 4 及更高版本中。
使用以下工作流,利用 source-to-image(S2I)流程在 OpenShift 镜像上为 JBoss EAP XP 构建并运行微服务应用。
JBoss EAP XP 3.0.0 的 OpenShift 映像提供默认的独立配置文件,它基于 standalone-microprofile-ha.xml 文件。有关 JBoss EAP XP 中包含的服务器配置文件的更多信息,请参见 单机服务器配置文件 部分。
此工作流使用 microprofile-config quickstart 作为示例。Quickstart 提供了一个小的特定工作示例,可用作您自己的项目的参考。如需更多信息,请参阅 JBoss EAP XP 3.0.0 随附的 microprofile-config quickstart。
其他资源
- 有关 JBoss EAP XP 中包含的服务器配置文件的更多信息,请参阅 单机服务器配置文件。
5.1. 为应用程序部署准备 OpenShift 复制链接链接已复制到粘贴板!
为 OpenShift 做好应用部署准备。
先决条件
已安装可正常运行的 OpenShift 实例。如需更多信息,请参阅 在 红帽客户门户网站 中安装和配置 OpenShift Container Platform 集群。
流程
-
使用
oc login 命令登录您的 OpenShift 实例。 在 OpenShift 中创建新项目:
项目允许一组用户组织和管理与其他组不同的内容。您可以使用以下命令在 OpenShift 中创建项目:
oc new-project PROJECT_NAME
$ oc new-project PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,对于
microprofile-configquickstart,使用以下命令创建名为eap-demo的新项目:oc new-project eap-demo
$ oc new-project eap-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 配置 Red Hat Container Registry 的身份验证 复制链接链接已复制到粘贴板!
在为 JBoss EAP XP 导入和使用 OpenShift 镜像之前,您必须将身份验证配置到 Red Hat Container Registry。
使用 registry 服务帐户创建身份验证令牌,以配置对 Red Hat Container Registry 的访问。使用身份验证令牌时,您不需要在 OpenShift 配置中使用或存储您的红帽帐户的用户名和密码。
流程
- 按照红帽客户门户网站中的说明,使用 Registry Service Account 管理应用程序 创建身份验证令牌。
下载含有令牌 OpenShift 机密的 YAML 文件。
您可以从令牌的 Token Information 页面上的 OpenShift Secret 选项卡下载 YAML 文件。
使用您下载的 YAML 文件为 OpenShift 项目创建身份验证令牌 secret:
oc create -f 1234567_myserviceaccount-secret.yaml
oc create -f 1234567_myserviceaccount-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令配置 OpenShift 项目的机密,并将以下机密名称替换为您在上一步中创建的机密名称:
oc secrets link default 1234567-myserviceaccount-pull-secret --for=pull oc secrets link builder 1234567-myserviceaccount-pull-secret --for=pull
oc secrets link default 1234567-myserviceaccount-pull-secret --for=pull oc secrets link builder 1234567-myserviceaccount-pull-secret --for=pullCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. 为 JBoss EAP XP 导入最新的 OpenShift 镜像流和模板 复制链接链接已复制到粘贴板!
为 JBoss EAP XP 导入最新的 OpenShift 镜像流和模板。
OpenShift 上的 OpenJDK 8 镜像和镜像流已弃用。
OpenShift 中仍然支持镜像和镜像流。但是,不会对这些镜像和镜像流进行任何增强,它们将来可能会被删除。红帽会根据标准支持条款和条件继续提供完全支持和程序错误修复 OpenJDK 8 镜像和镜像流。
流程
使用以下命令之一将 JBoss EAP XP 的 OpenShift 镜像的最新 JDK 11 镜像流和模板导入到您的 OpenShift 项目命名空间中。
导入 JDK 11 镜像流:
oc replace --force -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap-xp3/jboss-eap-xp3-openjdk11-openshift.json
oc replace --force -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap-xp3/jboss-eap-xp3-openjdk11-openshift.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令导入以下镜像流和模板:
- JDK 11 构建器镜像流:jboss-eap-xp3-openjdk11-openshift
- JDK 11 运行时镜像流:jboss-eap-xp3-openjdk11-runtime-openshift
导入 JDK 11 模板:
oc replace --force -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap-xp3/templates/eap-xp3-basic-s2i.json
oc replace --force -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap-xp3/templates/eap-xp3-basic-s2i.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
注意使用上述命令导入的 JBoss EAP XP 镜像流和模板仅在该 OpenShift 项目中可用。
如果您有常规
openshift命名空间的管理访问权限,并希望镜像流和模板可以被所有项目访问,请将-n openshift添加到命令的 oc replace行。例如:... oc replace -n openshift --force -f \ ...
... oc replace -n openshift --force -f \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要将镜像流和模板导入到其他项目中,请将
-n PROJECT_NAME添加到命令的 oc replace行。例如:... oc replace -n PROJECT_NAME --force -f ...
... oc replace -n PROJECT_NAME --force -f ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 cluster-samples-operator,请参阅 OpenShift 文档中有关配置集群样本操作器的内容。有关配置集群示例操作器的详情,请查看 https://docs.openshift.com/container-platform/latest/openshift_images/configuring-samples-operator.html。
5.4. 在 OpenShift 上部署 JBoss EAP XP Source-to-image(S2I)应用 复制链接链接已复制到粘贴板!
在 OpenShift 上部署 JBoss EAP XP 源至镜像(S2I)应用。
OpenShift 上的 OpenJDK 8 镜像和镜像流已弃用。
OpenShift 中仍然支持镜像和镜像流。但是,不会对这些镜像和镜像流进行任何增强,它们将来可能会被删除。红帽会根据标准的支持条款和条件继续为 OpenJDK 8 镜像和镜像流提供完全支持和程序错误修复。
先决条件
-
可选:模板可以为许多模板参数指定默认值,您可能需要覆盖部分或全部默认值。要查看模板信息,包括参数列表和任何默认值,请使用命令
oc describe template TEMPLATE_NAME。
流程
使用 JBoss EAP XP 镜像和您的 Java 应用的源代码,创建一个新的 OpenShift 应用。将其中一个提供的 JBoss EAP XP 模板用于 S2I 构建。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意模板可以为许多模板参数指定默认值,您可能需要覆盖部分或全部默认值。要查看模板信息,包括参数列表和任何默认值,请使用命令
oc describe template TEMPLATE_NAME。在创建新的 OpenShift 应用时,您可能还想 配置环境变量。
检索构建配置的名称。
oc get bc -o name
$ oc get bc -o nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中的构建配置名称来查看构建的 Maven 进度。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,对于
microprofile-config,以下命令显示 Maven 构建的进度:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. 为 JBoss EAP XP Source-to-image(S2I)应用完成部署后的任务 复制链接链接已复制到粘贴板!
根据您的应用,您可能需要在 OpenShift 应用构建和部署后完成一些任务。
部署后的任务示例包括:
- 公开服务,以便可以从 OpenShift 外部查看应用。
- 将应用扩展为特定数量的副本。
流程
使用以下命令获取应用的服务名称:
oc get service
$ oc get serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选 :将主服务作为路由公开,以便您可以从 OpenShift 外部访问您的应用。例如,对于
microprofile-configquickstart,使用以下命令公开所需的服务和端口:注意如果您使用模板来创建应用,则路由可能已存在。如果存在,请继续下一步。
oc expose service/eap-xp3-basic-app --port=8080
$ oc expose service/eap-xp3-basic-app --port=8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取路由的 URL。
oc get route
$ oc get routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 URL 访问 Web 浏览器中的应用。URL 是上一命令输出中
HOST/PORT字段的值。注意对于 JBoss EAP XP 3.0.0 GA 分发,microprofile 配置快速入门不会回复对应用根上下文的 HTTPS GET 请求。这个增强只在 {JBossXPShortName101} GA 发行版中可用。
例如,若要与 Microprofile Config 应用交互,该 URL 可能是浏览器中的
http://HOST_PORT_Value/config/value。如果您的应用不使用 JBoss EAP 根上下文,请将应用的上下文附加到 URL。例如,对于
microprofile-configquickstart,URL 可能是http://HOST_PORT_VALUE/microprofile-config/。您可以选择运行以下命令来扩展应用实例:此命令将副本数量增加到 3。
oc scale deploymentconfig DEPLOYMENTCONFIG_NAME --replicas=3
$ oc scale deploymentconfig DEPLOYMENTCONFIG_NAME --replicas=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,对于
microprofile-configquickstart,使用以下命令来扩展应用:oc scale deploymentconfig/eap-xp3-basic-app --replicas=3
$ oc scale deploymentconfig/eap-xp3-basic-app --replicas=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
如需有关 JBoss EAP XP 快速入门的更多信息,请参见《在 JBoss EAP 中使用 MicroProfile 指南》中的使用 快速入门章节。
第 6 章 功能修剪 复制链接链接已复制到粘贴板!
构建可引导 JAR 时,您可以决定要包含哪些 JBoss EAP 功能和子系统。
仅 OpenShift 或构建可引导 JAR 时支持功能修剪。
其他资源
6.1. 可用的 JBoss EAP 层 复制链接链接已复制到粘贴板!
红帽提供了多个层,可用于自定义 OpenShift 中的 JBoss EAP 服务器调配或可引导 JAR。
三个层是提供核心功能的基础层。其他层是解耦器层,使用额外的功能增强基础层。
大多数 decorator 层可用于在 JBoss EAP 中为 OpenShift 构建 S2I 镜像或构建可引导 JAR。些层不支持 S2I 镜像;对层的描述请注意此限制。
仅支持列出的层。不支持此处未列出的层。
6.1.1. 基础层 复制链接链接已复制到粘贴板!
每个基础层都包含适用于典型服务器用户案例的核心功能。
datasources-web-server
此层包括一个 servlet 容器,以及配置数据源的功能。
此层不包括 MicroProfile 功能。
此层支持以下 Jakarta EE 规格:
- Jakarta JSON 处理 1.1
- jakarta JSON Binding 1.0
- Jakarta Servlet 4.0
- Jakarta Expression Language 3.0
- Jakarta 服务器页面 2.3
- Jakarta Standard Tag Library 1.2
- jakarta Concurrency 1.1
- Jakarta 注释 1.3
- Jakarta XML Binding 2.3
- 雅加达调试支持其他语言 1.0
- Jakarta Transaction 1.3
- Jakarta Connector API 1.7
jaxrs-server
该层通过以下 JBoss EAP 子系统 增强了数据源-web-server 层:
-
jaxrs -
weld -
jpa
此层还添加了基于 Infinispan 的第二级实体在容器中进行本地缓存。
此层中包含以下 MicroProfile 功能:
- MicroProfile REST 客户端
除了 datasources-web-server 层所支持的以下 Jakarta EE 规格外,还支持以下 Jakarta EE 规格:
- Jakarta 上下文和依赖注入 2.0
- Jakarta Bean Validation 2.0
- Jakarta Interceptors 1.2
- Jakarta RESTful Web Services 2.1
- Jakarta Persistence 2.2
cloud-server
该层使用以下 JBoss EAP 子系统增强了 jaxrs-server 层:
-
resource-adapters -
messaging-activemq(远程代理消息传递,而非嵌入式消息传递)
此层还会在 jaxrs-server 层中添加以下可观察功能:
- MicroProfile Health
- MicroProfile Metrics
- MicroProfile Config
- MicroProfile OpenTracing
除了 jaxrs-server 层支持的以下 Jakarta EE 规格外,还支持以下 Jakarta EE 规格:
- Jakarta 安全 1.0
6.1.2. decorator 层 复制链接链接已复制到粘贴板!
解码器层不单独使用。您可以使用基础层配置一个或多个 decorator 层,以提供额外的功能。
ejb-lite
这个 decorator 层为调配的服务器添加了一个最小的 Jakarta Enterprise Beans 实施。这个层不包括以下支持:
- IIOP 集成
- MDB 实例池
- 远程连接器资源
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
Jakarta Enterprise Beans
这个解码器层扩展了 ejb-lite 层。除了 ejb-lite 层中包含的基本功能外,这个层还会为置备的服务器增加以下支持:
- MDB 实例池
- 远程连接器资源
如果要使用消息驱动型 Bean(MDB)或 Jakarta 企业 Bean 远程功能或两者,可使用此层。如果您不需要这些功能,请使用 ejb-lite 层。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
ejb-local-cache
此 decorator 层向调配的服务器中添加了对 Jakarta 企业 Bean 的本地缓存支持。
依赖项 :您只能在包含 ejb-lite 层或 ejb 层时包括这个 层。
这个层与 ejb-dist-cache 层不兼容。如果包含 ejb-dist-cache 层,则无法包含 ejb-local-cache 层。如果您同时包含这两个层,生成的构建可能包含意外的 Jakarta Enterprise Beans 配置。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
ejb-dist-cache
此 decorator 层向调配的服务器添加了对 Jakarta 企业 Bean 的分布式缓存支持。
依赖项 :您只能在包含 ejb-lite 层或 ejb 层时包括这个 层。
这个层与 ejb-local-cache 层不兼容。如果包含 ejb-dist-cache 层,则无法包含 ejb-local-cache 层。如果您同时包含这两个层,则生成的构建可能会导致意外的配置。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
jdr
此解码器层添加了 JBoss 诊断报告(jdr)子系统,以在请求红帽支持时收集诊断数据。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
Jakarta Persistence
这个解码器层为单节点服务器增加了持久性功能。请注意,只有服务器能够组成集群,分布式缓存才有效。
该层将 Hibernate 库添加到置备的服务器中,并提供以下支持:
-
jpa子系统的配置 -
配置
infinispan子系统 - 本地 Hibernate 缓存容器
这个层与 jpa-distributed 层不兼容。如果包含 jpa 层,则无法包含 jpa-distributed 层。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
jpa-distributed
此解码器层为集群中运行的服务器添加持久性功能。该层将 Hibernate 库添加到置备的服务器中,并提供以下支持:
-
jpa子系统的配置 -
配置
infinispan子系统 - 本地 Hibernate 缓存容器
- 无效的和复制 Hibernate 缓存容器
-
配置
jgroups子系统
这个层与 jpa 层不兼容。如果包含 jpa 层,则无法包含 jpa-distributed 层。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
Jakarta Server Faces
此 decorator 层将 jsf 子系统添加到调配的服务器。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
microprofile-platform
此 decorator 层将以下 MicroProfile 功能添加到调配的服务器中:
- MicroProfile Config
- MicroProfile 容错
- MicroProfile Health
- MicroProfile JWT
- MicroProfile Metrics
- MicroProfile OpenAPI
- MicroProfile OpenTracing
此层包含也会包含在 可观察 层中的 MicroProfile 功能。如果包含这个层,则不需要包含 可观察 层。
Observability(可观察性)
这个 decorator 层在置备的服务器中添加以下可观察功能:
- MicroProfile Health
- MicroProfile Metrics
- MicroProfile Config
- MicroProfile OpenTracing
此层内置到 cloud-server 层。您不需要将此层添加到 云服务器层。
remote-activemq
此 decorator 层添加了与远程 ActiveMQ 代理与调配的服务器通信的功能,从而集成消息传递支持。
池式连接工厂配置将 guest 指定为 用户和 密码 属性的值。您可以使用 CLI 脚本在运行时更改这些值。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
sso
这个解码器层将红帽单点登录集成添加到调配的服务器中。
只有在使用 S2I 调配服务器时,才应使用此层。
web-console
此 decorator 层将管理控制台添加到调配的服务器。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
web-clustering
此decorator 层通过配置基于非本地 Infinispan 的容器 web 缓存来增加对可分布式 Web 应用的支持,以便处理适合集群环境的数据会话。
web-passivation
此后方层通过为适合单一节点环境的数据传输配置基于 Infinispan 的容器 Web 缓存来配置对可分发的 Web 应用的支持。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
Web 服务
此层向调配的服务器添加 Web 服务功能,支持 Jakarta Web 服务部署。
只有在构建可引导 JAR 时才支持这一层。使用 S2I 时不支持这个层。
其他资源
如果要将 MicroProfile 功能整合到在 CodeReady Studio 上开发的应用中,您必须在 CodeReady Studio 中启用对 JBoss EAP 的 MicroProfile 支持。
JBoss EAP 扩展包为 MicroProfile 提供支持。
JBoss EAP 扩展软件包在 JBoss EAP 7.2 及更早版本中不受支持。
JBoss EAP 扩展包的每个版本都支持 JBoss EAP 的特定补丁。详情请查看 JBoss EAP 扩展包支持和生命周期政策页。
Openshift 的 JBoss EAP XP 快速入门仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。
7.1. 配置 CodeReady Studio 以使用 MicroProfile 功能 复制链接链接已复制到粘贴板!
要在 JBoss EAP 上启用 MicroProfile 支持,请注册 JBoss EAP XP 的新运行时服务器,然后创建新的 JBoss EAP 7.4 服务器。
为服务器命名合适的名称,以帮助您识别它支持 MicroProfile 功能。
此服务器使用新创建的 JBoss EAP XP 运行时,它指向之前安装的运行时并使用 standalone-microprofile.xml 配置文件。
如果您在 Red Hat CodeReady Studio 中将 Target runtime 设为 7.4 或更新的运行时版本,则您的项目与 Jakarta EE 8 规范兼容。
先决条件
流程
在
New Server对话框中设置新服务器。- 在 Select server type 列表中,选择 Red Hat JBoss Enterprise Application Platform 7.4。
- 在 Server 的主机名 字段中,输入 localhost。
- 在 Server name 字段中,输入 JBoss EAP 7.4 XP。
- 点 Next。
配置新服务器.
- 在 Home directory 字段中,如果您不想使用默认设置,请指定一个新目录;例如: home/myname/dev/microprofile/runtimes/jboss-eap-7.3。
- 确保 执行环境 设置为 JavaSE-1.8。
- 可选:更改 服务器基础目录和 配置文件中的 值。
- 点 Finish。
结果
您现在已准备好使用 MicroProfile 功能开始开发应用,或者开始将 MicroProfile 快速入门用于 JBoss EAP。
7.2. 将 MicroProfile 快速入门用于 CodeReady Studio 复制链接链接已复制到粘贴板!
启用 MicroProfile 快速入门提供了在已安装的服务器上运行和测试的简单示例。
这些示例演示了以下 MicroProfile 功能:
- MicroProfile Config
- MicroProfile 容错
- MicroProfile Health
- MicroProfile JWT
- MicroProfile Metrics
- MicroProfile OpenAPI
- MicroProfile OpenTracing
- MicroProfile REST 客户端
流程
-
从 Quickstart Parent Artifact 中导入
pom.xml文件。 如果您使用的快速入门需要环境变量,请配置环境变量。
在服务器 Overview 对话框的启动配置上定义环境变量。
例如,
microprofile-opentracingquickstart 使用以下环境变量:-
JAEGER_REPORTER_LOG_SPANS设置为true -
JAEGER_SAMPLER_PARAM设置为1 -
JAEGER_SAMPLER_TYPE设置为const
-
其他资源
Red Hat JBoss Enterprise Application Platform expansion pack 支持和生命周期政策
第 8 章 可引导 JAR 复制链接链接已复制到粘贴板!
您可以使用 JBoss EAP JAR Maven 插件将微服务应用构建和打包为可引导 JAR。然后,您可以在 JBoss EAP 裸机平台或 JBoss EAP OpenShift 平台上运行该应用。
8.1. 关于可引导 JAR 复制链接链接已复制到粘贴板!
您可以使用 JBoss EAP JAR Maven 插件将微服务应用构建和打包为可引导 JAR。
可引导 JAR 包含服务器、打包的应用和启动服务器的运行时。
JBoss EAP JAR Maven 插件使用 Galleon 修剪功能来减少服务器的大小和内存占用空间。因此,您可以根据要求配置服务器,包括仅提供所需功能的 Galleon 层。
JBoss EAP JAR Maven 插件支持执行 JBoss EAP CLI 脚本文件来自定义您的服务器配置。CLI 脚本包含用于配置服务器的 CLI 命令列表。
可引导 JAR 类似于标准的 JBoss EAP 服务器:
- 它支持 JBoss EAP 通用管理 CLI 命令。
- 它可以通过 JBoss EAP 管理控制台进行管理。
将服务器打包到可引导 JAR 中时存在以下限制:
- 不支持需要重新启动服务器的 CLI 管理操作。
- 服务器无法在仅 admin 模式下重新启动,这是一种启动与服务器管理相关的服务的模式。
- 如果关闭服务器,应用到服务器的更新将会丢失。
另外,您可以调配可引导 JAR。此 JAR 仅包含服务器,因此您可以重复使用服务器来运行不同的应用。
8.2. JBoss EAP Maven 插件 复制链接链接已复制到粘贴板!
您可以使用 JBoss EAP JAR Maven 插件将应用构建为可引导 JAR。
您可以从 Maven 存储库检索最新的 Maven 插件版本,该存储库可通过 /ga/org/wildfly/plugins/wildfly-jar-maven-plugins/wildfly-jar-maven-plugin 提供。
在 Maven 项目中,src 目录包含 构建应用所需的所有源文件。在 JBoss EAP JAR Maven 插件构建可引导 JAR 后,生成的 JAR 位于 target/<application>-bootable.jar 中。
JBoss EAP JAR Maven 插件还提供以下功能:
- 将 CLI 脚本命令应用到服务器。
-
使用
org.jboss.eap:wildfly-galleon-packGalleon 功能包及其部分层来自定义服务器配置文件。 - 支持向打包的可引导 JAR 中添加额外的文件,如密钥存储文件。
- 包括创建可引导 JAR 的 hollow JAR 的功能;即,可引导 JAR,不包含应用。
在使用 JBoss EAP JAR Maven 插件创建可引导 JAR 后,您可以通过发出下列命令来启动应用:将 target/myapp-bootable.jar 替换为可引导 JAR 的路径。例如:
java -jar target/myapp-bootable.jar
$ java -jar target/myapp-bootable.jar
要获得受支持的可引导 JAR 启动命令列表,请在启动命令末尾附加 --help。例如,java -jar target/myapp-bootable.jar --help。
8.3. 可引导 JAR 参数 复制链接链接已复制到粘贴板!
查看下表中的参数,以了解与可引导 JAR 一起使用的参数。
| 参数 | Description |
|---|---|
|
| 显示指定命令的帮助消息并退出。 |
|
| 特定于可引导 JAR 的参数.指定包含您要部署到服务器上的应用程序的 WAR、JAR、EAR 文件或展开目录的路径。 |
|
| 打印生成的 Galleon 配置文件的内容。 |
|
|
默认情况下,JVM 设置用于在启动可引导 JAR 后创建 TEMP 目录。您可以使用 |
|
| 运行安装有安全管理器的服务器。 |
|
|
将系统属性 |
|
|
设置系统属性 |
|
| 指定服务器在服务器运行时设置的系统属性。可引导 JAR JVM 不设置这些系统属性。 |
|
| 从指定的 URL 加载系统属性. |
|
| 设置安全属性。 |
|
|
设置系统属性 |
|
| 显示应用服务器版本并退出。 |
8.4. 为您的可引导 JAR 服务器指定 Galleon 层 复制链接链接已复制到粘贴板!
您可以指定 Galleon 层来为您的服务器构建自定义配置。另外,您可以指定您要从服务器中排除的 Galleon 层。
要引用单个功能包,请使用 <feature-pack-location> 元素来指定其位置。以下示例在 Maven 插件配置文件中的 <feature 。
-pack> 元素中指定了 org.jboss.eap:wildfly-galleon-pack: 3.0.0.GA-redhat-00001
<configuration> <feature-pack-location>org.jboss.eap:wildfly-galleon-pack:3.0.0.GA-redhat-00001</feature-pack-location> </configuration>
<configuration>
<feature-pack-location>org.jboss.eap:wildfly-galleon-pack:3.0.0.GA-redhat-00001</feature-pack-location>
</configuration>
如果您需要引用多个功能包,请在 <feature-packs> 元素中列出它们。以下示例显示了将 Red Hat Single Sign-On 功能包添加到 <feature-packs> 元素中:
您可以组合多个功能包中的 Galleon 层来配置可引导 JAR 服务器,使其仅包含提供您所需功能的受支持 Galleon 层。
在裸机平台上,如果您未在配置文件中指定 Galleon 层,调配的服务器包含与默认 standalone-microprofile.xml 配置相同的配置。
在 OpenShift 平台上,在插件 配置中添加 <cloud/> 配置元素后,您选择不在配置文件中指定 Galleon 层,置备的服务器包含根据云环境进行调整的配置,并且与默认的 standalone-microprofile-ha.xml 类似。
先决条件
- 已安装 Maven。
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。
流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties>
<bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
<properties>
<bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
流程
- 确定受支持的 JBoss EAP Galleon 层,它们可提供运行应用所需的功能。
在 Maven 项目
pom.xml文件的<plugin>元素中引用 JBoss EAP 功能包位置。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本,如下例中所示。以下示例还显示包含单个功能包,其中包括jaxrs-server基础层和jpa-distributed层:jaxrs-server基础层为服务器提供额外的支持。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此示例还演示了将
jpa层从项目中排除。注意如果您在项目中包含
jpa-distributed层,则必须将jpa层从jaxrs-server层中排除。jpa层配置本地 infinispan hibernate 缓存,而jpa-distributed层配置远程 infinispan hibernate 缓存。
8.5. 在 JBoss EAP 裸机平台上使用可引导 JAR 复制链接链接已复制到粘贴板!
您可以将应用打包为 JBoss EAP 裸机平台上的可引导 JAR。
可引导 JAR 包含服务器、打包的应用和启动服务器的运行时。
此流程演示了使用 JBoss EAP JAR Maven 插件将 MicroProfile Config 微服务应用打包为可引导 JAR。请参阅 MicroProfile 配置开发。
您可以使用 CLI 脚本在可引导 JAR 打包期间配置服务器。
在构建必须在可引导 JAR 中打包的 web 应用程序时,您必须在 pom.xml 文件的 <packaging> 元素 中指定 war。例如:
<packaging>war</packaging>
<packaging>war</packaging>
构建应用需要此值,才能将构建应用打包为 WAR 文件,而不是默认的 JAR 文件。
在仅用于构建易引导 JAR 的 Maven 项目中,将打包值设置为 pom。例如:
<packaging>pom</packaging>
<packaging>pom</packaging>
在为 Maven 项目构建可引导 JAR 时,您不限于使用 pom 打包。您可以通过在 <hollow-jar> 元素中为任意类型的打包(如 war )指定 true 来创建一个。请参阅在 JBoss EAP 裸机平台上创建可引导 JAR。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 - 您已创建了 Maven 项目,设置父依赖项,并且添加了用于创建 MicroProfile 应用的依赖关系。请参阅 MicroProfile 配置开发。
流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties>
<bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
<properties>
<bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
流程
将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您没有在
pom.xml文件中指定 Galleon 层,则可引导 JAR 服务器包含与standalone-microprofile.xml配置一致的配置。将应用程序打包为可引导 JAR:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动应用程序:
NAME="foo" java -jar target/microprofile-config-bootable.jar
$ NAME="foo" java -jar target/microprofile-config-bootable.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意该示例使用
NAME作为环境变量,但您可以选择使用jim,这是默认值。注意要查看受支持的可引导 JAR 参数列表,请在
java -jar target/microprofile-config-bootable.jar命令的末尾附加--help。在 Web 浏览器中指定以下 URL 以访问 MicroProfile Config 应用:
http://localhost:8080/config/json
http://localhost:8080/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证: 在终端中运行以下命令来测试应用程序的行为:
curl http://localhost:8080/config/json
curl http://localhost:8080/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是预期的输出:
{"result":"Hello foo"}{"result":"Hello foo"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6. 在 JBoss EAP 裸机平台上创建 hollow 可引导 JAR 复制链接链接已复制到粘贴板!
您可以将应用打包为 JBoss EAP 裸机平台上的可热引导 JAR。
易引导 JAR 仅包含 JBoss EAP 服务器。hollow 可引导 JAR 由 JBoss EAP JAR Maven 插件打包。该应用在服务器运行时提供。如果您需要为不同的应用重新使用服务器配置,Hollow 可引导 JAR 非常有用。
先决条件
- 您已创建了 Maven 项目,设置父依赖项,并添加了用于创建应用的依赖项。请参阅 MicroProfile 配置开发。
-
您已完成了在 JBoss EAP 裸机平台上使用可引导 JAR 中所述的
pom.xml文件配置步骤。 -
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。
流程中演示的示例为 Gall eon 功能包版本指定了 ${jboss.xp.galleon.feature.pack.version},但您必须在项目中设置 属性。例如:
<properties>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
<properties>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
流程
-
要构建 hollow 可引导 JAR,您必须在项目
pom.xml文件中将<hollow-jar> 插件配置元素设置为 true。例如:
通过在 <hollow-jar> 元素中指定 true,JBoss EAP JAR Maven 插件不会将应用程序包含在 JAR 中。
构建 hollow 可引导 JAR:
mvn clean package
$ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 hollow 可引导 JAR:
java -jar target/microprofile-config-bootable.jar --deployment=target/microprofile-config.war
$ java -jar target/microprofile-config-bootable.jar --deployment=target/microprofile-config.warCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要指定您要部署到服务器上的 WAR 文件的路径,请使用以下参数,其中
<PATH_NAME>是部署的路径。--deployment=<PATH_NAME>
--deployment=<PATH_NAME>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 访问应用程序:
curl http://localhost:8080/microprofile-config/config/json
$ curl http://localhost:8080/microprofile-config/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意若要将 Web 应用注册到根目录,请将 applicationROOT.war 命名为 application
ROOT.war。
8.7. CLI 脚本 复制链接链接已复制到粘贴板!
您可以在可引导 JAR 打包期间创建 CLI 脚本来配置服务器。
CLI 脚本是一个文本文件,它包含一系列 CLI 命令,可用于应用其他服务器配置。例如,您可以创建一个脚本来添加新日志记录器到 logging 子系统。
您还可以在 CLI 脚本中指定更复杂的操作。例如,您可以将安全管理操作分组到一个命令中,为管理 HTTP 端点启用 HTTP 身份验证。
在将应用程序打包为可引导 JAR 之前,您必须在插件配置的 <cli-session> 元素 中定义 CLI 脚本。这可确保服务器配置设置在打包可引导 JAR 后保留。
虽然您可以组合预定义的 Galleon 层来配置部署应用程序的服务器,但限制确实存在。例如,在打包可引导 JAR 时,您不能使用 Galleon 层启用 HTTPS undertow 侦听器。相反,您必须使用 CLI 脚本。
您必须在 pom.xml 文件的 <cli-session> 元素中定义 CLI 脚本。下表显示了 CLI 会话属性的类型:
| 参数 | Description |
|---|---|
|
| 到脚本文件的路径列表. |
|
|
指定属性文件路径的可选属性。此文件列出了脚本可使用 |
|
|
包含布尔值的可选属性。指示是否在向服务器发送操作请求前解析系统属性或表达式。默认值为 |
-
CLI 脚本按照在
pom.xml文件的<cli-session>元素中定义的顺序启动。 - JBoss EAP JAR Maven 插件为每个 CLI 会话启动嵌入式服务器。因此,您的 CLI 脚本不必启动或停止嵌入的服务器。
8.8. 在 JBoss EAP OpenShift 平台上使用可引导 JAR 复制链接链接已复制到粘贴板!
将应用打包为可引导 JAR 后,您可以在 JBoss EAP OpenShift 平台上运行该应用。
在 OpenShift 中,您不能将 EAP Operator 自动事务恢复功能用于可引导 JAR。计划在以后的 JBoss EAP XP 3.0.0 补丁版本中修复此技术限制。
先决条件
- 您已为 MicroProfile Config 开发 创建了 Maven 项目。
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 3 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。
流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties>
<bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
<properties>
<bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
<jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>
流程
将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须将
<cloud/>元素包含在插件配置的<configuration> 元素中,以便 JBoss EAP Maven JAR 插件可以识别您选择 OpenShift 平台。打包应用程序:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc login 命令登录您的 OpenShift 实例。 在 OpenShift 中创建新项目:例如:
oc new-project bootable-jar-project
$ oc new-project bootable-jar-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下
oc命令来创建应用程序镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意OpenShift 应用一组 CLI 脚本命令到可引导 JAR 配置文件,以将其调整到云环境。您可以通过打开 Maven 项目
/target 目录中的bootable-jar-build-artifacts/generated-cli-script.txt文件来访问此脚本。验证:
使用以下命令,查看可用的 OpenShift pod 列表并检查 pod 构建状态:
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证构建的应用程序镜像:
oc get is microprofile-config-app
$ oc get is microprofile-config-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示了构建的应用镜像详细信息,如名称和镜像存储库、标签等。对于此流程中的示例,镜像流名称和标签输出会显示
microprofile-config-app:latest。部署应用程序:
oc new-app microprofile-config-app oc expose svc/microprofile-config-app
$ oc new-app microprofile-config-app $ oc expose svc/microprofile-config-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要为可引导 JAR 提供系统属性,您必须使用
JAVA_OPTS_APPEND环境变量。以下示例演示了JAVA_OPTS_APPEND环境变量的用法:oc new-app <_IMAGESTREAM_> -e JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
$ oc new-app <_IMAGESTREAM_> -e JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个新应用并启动。应用配置作为新服务公开。
验证 :在终端中运行以下命令来测试应用程序的行为:
curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json$ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
{"result":"Hello jim"}{"result":"Hello jim"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.9. 为 OpenShift 配置可引导 JAR 复制链接链接已复制到粘贴板!
在使用可引导 JAR 之前,您可以配置 JVM 设置以确保您的单机服务器在用于 OpenShift 的 JBoss EAP 上正确运行。
使用 JAVA_OPTS_APPEND 环境变量来配置 JVM 设置。使用 JAVA_ARGS 命令,为可引导 JAR 提供参数。
您可以使用环境变量来设置属性的值。例如,您可以使用 JAVA_OPTS_APPEND 环境变量将 -Dwildfly.statistics-enabled 属性设置为 true :
JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
现在为您的服务器启用统计信息。
如果需要为可引导 JAR 提供参数,请使用 JAVA_ARGS 环境变量。
用于 OpenShift 的 JBoss EAP 提供 JDK 11 镜像。要运行与可引导 JAR 关联的应用程序,您必须首先将最新的 OpenJDK 11 镜像流标签和镜像信息导入到 OpenShift 项目中。然后,您可以使用环境变量在导入的镜像中配置 JVM。
您可以应用相同的配置选项来配置用于 JBoss EAP 的 OpenShift S2I 镜像的 JVM,但会有以下区别:
-
可选:
-Xlog功能不可用,但您可以通过启用-Xlog:gc来设置垃圾回收日志记录。例如:JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time"。 -
要增加初始 metaspace 大小,您可以设置
GC_METASPACE_SIZE环境变量。要获得最佳元数据容量性能,请将值设置为96。 -
GC_MAX_METASPACE_SIZE的默认值被设置为100,但对于垃圾回收后的最佳元数据容量,您必须将其设置为至少256。 -
为更好地生成随机文件,请使用
JAVA_OPTS_APPEND环境变量将java.security.egd属性设置为-Djava.security.egd=file:/dev/urandom。
在导入的 OpenJDK 11 镜像上运行时,这些配置提高了 JVM 的内存设置和垃圾回收功能。
8.10. 在 OpenShift 上的应用程序中使用 ConfigMap 复制链接链接已复制到粘贴板!
对于 OpenShift,您可以使用部署控制器(dc)将 configmap 挂载到用于运行应用的容器集中。
ConfigMap 是一种 OpenShift 资源,用于在键值对中存储非机密数据。
在指定了 microprofile-platform Galleon 层以 add microprofile-config-smallrye 子系统和服务器配置文件的任何扩展后,您可以使用 CLI 脚本向 服务器配置添加新 ConfigSource。您可以在 Maven 项目的根目录下将 CLI 脚本保存在可访问的目录中,如 /scripts 目录。
MicroProfile 配置功能在 JBoss EAP 中使用 SmallRye Config 组件实施,由 microprofile-config-smallrye 子系统提供。此子系统包含在 microprofile-platform Galleon 层中。
先决条件
- 已安装 Maven。
- 您已配置了 JBoss EAP Maven 存储库。
- 您已将应用打包为可引导 JAR,您可以在 JBoss EAP OpenShift 平台上运行该应用。有关在 OpenShift 平台上将应用构建为可引导 JAR 的信息,请参阅 在 JBoss EAP OpenShift 平台上使用可引导 JAR。
流程
在项目的根目录下,创建名为
scripts的目录。例如:mkdir scripts
$ mkdir scriptsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
cli.properties文件,并将文件保存到/scripts目录中。在此文件中定义config.path和config.ordinal系统属性。例如:config.path=/etc/config config.ordinal=200
config.path=/etc/config config.ordinal=200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CLI 脚本,如
mp-config.cli,并将它保存在可引导 JAR 的可访问目录中,如/scripts目录。以下示例显示了mp-config.cli脚本的内容:config map /subsystem=microprofile-config-smallrye/config-source=os-map:add(dir={path=${config.path}}, ordinal=${config.ordinal})# config map /subsystem=microprofile-config-smallrye/config-source=os-map:add(dir={path=${config.path}}, ordinal=${config.ordinal})Copy to Clipboard Copied! Toggle word wrap Toggle overflow The
mp-config.cliCLI 脚本创建一个新的ConfigSource,其从属性文件检索到序数和路径值。-
将脚本保存到
/scripts目录中,该目录位于项目的根目录下。 将以下配置提取添加到现有插件
<configuration>元素中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打包应用程序:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc login 命令登录您的 OpenShift 实例。 可选: 如果您之前没有创建
target/openshift子目录,则必须使用以下命令创建 suddirectory:mkdir target/openshift
$ mkdir target/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将打包的应用复制到创建的子目录中。
cp target/microprofile-config-bootable.jar target/openshift
$ cp target/microprofile-config-bootable.jar target/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
target/openshift子目录作为二进制输入来构建应用程序:oc start-build microprofile-config-app --from-dir target/openshift
$ oc start-build microprofile-config-app --from-dir target/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意OpenShift 将一组 CLI 脚本命令应用到可引导 JAR 配置文件,以将其用于云环境。您可以通过打开 Maven 项目
/target目录中的bootable-jar-build-artifacts/generated-cli-script.txt文件来访问此脚本。创建
ConfigMap。例如:oc create configmap microprofile-config-map --from-literal=name="Name comes from Openshift ConfigMap"
$ oc create configmap microprofile-config-map --from-literal=name="Name comes from Openshift ConfigMap"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 dc 将
ConfigMap挂载到应用中。例如:oc set volume deployments/microprofile-config-app --add --name=config-volume \ --mount-path=/etc/config \ --type=configmap \ --configmap-name=microprofile-config-map
$ oc set volume deployments/microprofile-config-app --add --name=config-volume \ --mount-path=/etc/config \ --type=configmap \ --configmap-name=microprofile-config-mapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在执行
oc set volume命令后,应用将使用新的配置设置重新部署。测试输出:
curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json$ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是预期的输出:
{"result":"Hello Name comes from Openshift ConfigMap"}{"result":"Hello Name comes from Openshift ConfigMap"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.11. 创建可引导 JAR Maven 项目 复制链接链接已复制到粘贴板!
按照以下步骤创建 Maven 项目示例。您必须先创建一个 Maven 项目,然后才能执行以下步骤:
- 为可引导 JAR 启用 JSON 日志记录
- 为多个可引导 JAR 实例启用 Web 会话数据存储
- 使用 CLI 脚本为可引导 JAR 启用 HTTP 身份验证
- 使用红帽单点登录保护 JBoss EAP 可引导 JAR 应用程序
在 pom.xml 项目文件中,您可以将 Maven 配置为检索构建可引导 JAR 所需的项目构件。
流程
设置 Maven 项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 GROUP_ID 是项目的
groupId,ARTIFACT_ID 是项目的artifactId。在
pom.xml文件中,配置 Maven,以从远程存储库检索 JBoss EAP BOM 文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 Maven 配置为自动管理
jboss-eap-jakartaee8BOM 中的 Jakarta EE 构件的版本,请将 BOM 添加到pom.xml项目的<dependencyManagement> 部分中。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将由 BOM 管理的 servlet API 构件添加到项目的
pom.xml文件的<dependency> 部分,如下例所示:<dependency> <groupId>org.jboss.spec.javax.servlet</groupId> <artifactId>jboss-servlet-api_4.0_spec</artifactId> <scope>provided</scope> </dependency><dependency> <groupId>org.jboss.spec.javax.servlet</groupId> <artifactId>jboss-servlet-api_4.0_spec</artifactId> <scope>provided</scope> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.12. 为可引导 JAR 启用 JSON 日志记录 复制链接链接已复制到粘贴板!
您可以通过使用 CLI 脚本配置服务器日志配置,为您的可引导 JAR 启用 JSON 日志记录。启用 JSON 日志记录时,您可以使用 JSON 格式查看 JSON 格式的日志消息。
此流程中的示例演示了如何在裸机平台和 OpenShift 平台上为可引导 JAR 启用 JSON 日志记录。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的 次要版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 您已创建了 Maven 项目,设置父依赖项,并添加了用于创建应用的依赖项。请参阅 创建可引导 JAR Maven 项目。
重要在 Maven 项目的 Maven archetype 中,您必须指定特定于项目的 groupID 和 artifactID。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties><properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
用于 Maven 插件版本的
流程
将由 BOM 管理的 JBoss Logging 和 Jakarta RESTful Web Services 依赖项添加到项目的
pom.xml文件的<dependencies> 部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于存储 Java 文件的目录:
mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。创建包含以下内容的 Java 文件
RestApplication.java,并将该文件保存到APPLICATION_ROOT/src/main/java/com/example/logging/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的 Java 文件
HelloWorldEndpoint.java,并将该文件保存到APPLICATION_ROOT/src/main/java/com/example/logging/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CLI 脚本,如
logging.cli,并将它保存在可引导 JAR 中的可访问目录中,如APPLICATION_ROOT/scripts目录,其中APPLICATION_ROOT是 Maven 项目的根目录。该脚本必须包含以下命令:/subsystem=logging/logger=com.example.logging:add(level=ALL) /subsystem=logging/json-formatter=json-formatter:add(exception-output-type=formatted, pretty-print=false, meta-data={version="1"}, key-overrides={timestamp="@timestamp"}) /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=ALL) /subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json-formatter)/subsystem=logging/logger=com.example.logging:add(level=ALL) /subsystem=logging/json-formatter=json-formatter:add(exception-output-type=formatted, pretty-print=false, meta-data={version="1"}, key-overrides={timestamp="@timestamp"}) /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=ALL) /subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json-formatter)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下配置提取添加到插件
<configuration>元素中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例显示了
logging.cliCLI 脚本,该脚本修改服务器日志配置文件,以为您的应用启用 JSON 日志记录。将应用打包为可引导 JAR。
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选 : 要在 JBoss EAP 裸机平台上运行应用,请按照在 JBoss EAP 裸机平台上使用可引导 JAR 中所述的步骤进行操作, 但会有以下差异:
启动应用程序:
mvn wildfly-jar:run
mvn wildfly-jar:runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证:您可以通过在浏览器中指定以下 URL 来访问应用 :
预期输出:您可以在应用程序控制台中查看 JSON 格式的日志,包括
com.example.logging.HelloWorldEndpoint调试追踪。
可选 : 要在 JBoss EAP OpenShift 平台上运行应用程序,请完成以下步骤:
在插件配置中添加
<cloud/> 元素。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新构建应用程序:
mvn clean package
$ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc login 命令登录您的 OpenShift 实例。 在 OpenShift 中创建新项目:例如:
oc new-project bootable-jar-project
$ oc new-project bootable-jar-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下
oc命令来创建应用程序镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用程序:
oc new-app logging oc expose svc/logging
$ oc new-app logging $ oc expose svc/loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取路由的 URL。
oc get route logging --template='{{ .spec.host }}'$ oc get route logging --template='{{ .spec.host }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一命令返回的 URL 访问 Web 浏览器中的应用。例如:
http://ROUTE_NAME/hello
http://ROUTE_NAME/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证: 运行以下命令来查看可用的 OpenShift pod 列表,并检查 pod 构建状态:
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问应用的正在运行的容器集日志。其中
APP_POD_NAME是正在运行的容器集日志记录应用程序的名称。oc logs APP_POD_NAME
$ oc logs APP_POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期结果:pod 日志采用 JSON 格式,包括
com.example.logging.HelloWorldEndpoint调试追踪。
8.13. 为多个可引导 JAR 实例启用 Web 会话数据存储 复制链接链接已复制到粘贴板!
您可以将 web 集群应用程序构建和打包为可引导 JAR。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 您已创建了 Maven 项目,设置父依赖项,并添加了用于创建 web-clustering 应用的依赖项。请参阅 创建可引导 JAR Maven 项目。
重要在设置 Maven 项目时,您必须在 Maven archetype 配置中指定值。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties><properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
用于 Maven 插件版本的
流程
将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意本例使用
web-clusteringGalleon 层来启用 Web 会话共享。使用以下配置更新
src/main/webapp/WEB-INF目录中的web.xml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <distributable/>标签表示此 servlet 可以分布在多个服务器中。创建用于存储 Java 文件的目录:
mkdir -p APPLICATION_ROOT /src/main/java/com/example/webclustering/
$ mkdir -p APPLICATION_ROOT /src/main/java/com/example/webclustering/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。创建包含以下内容的 Java 文件
MyServlet.java,并将文件保存到APPLICATION_ROOT/src/main/java/com/example/webclustering/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow MyServlet.java中的内容定义客户端向其发送 HTTP 请求的端点。创建包含以下内容的 Java 文件
User.java,并将文件保存到APPLICATION_ROOT/src/main/java/com/example/webclustering/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打包应用程序:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选 : 要在 JBoss EAP 裸机平台上运行应用,请按照在 JBoss EAP 裸机平台上使用可引导 JAR 中所述的步骤进行操作, 但会有以下差异:
在 JBoss EAP 裸机平台上,您可以使用
java -jar命令来运行多个可引导 JAR 实例,如下例所示:java -jar target/web-clustering-bootable.jar -Djboss.node.name=node1 java -jar target/web-clustering-bootable.jar -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=10
$ java -jar target/web-clustering-bootable.jar -Djboss.node.name=node1 $ java -jar target/web-clustering-bootable.jar -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=10Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 :您可以访问节点 1 实例上的应用 :注意用户会话 ID 和用户创建时间。
终止此实例后,您可以访问节点 2 实例: http://127.0.0.1:8090/clustering。用户必须与会话 ID 和节点 1 实例的用户创建时间匹配。
可选 : 要在 JBoss EAP OpenShift 平台上运行应用,请按照在 JBoss EAP OpenShift 平台上使用可引导 JAR 中所述的步骤,但完成以下步骤:
在插件配置中添加
<cloud/> 元素。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新构建应用程序:
mvn clean package
$ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc login 命令登录您的 OpenShift 实例。 在 OpenShift 中创建新项目:例如:
oc new-project bootable-jar-project
$ oc new-project bootable-jar-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 若要在 JBoss EAP OpenShift 平台上运行 web-clustering 应用,必须为容器集在其中运行的服务帐户授予授权访问权限。然后,服务帐户可以访问 Kubernetes REST API。以下示例演示了为服务帐户授予授权访问权限:
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下
oc命令来创建应用程序镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用程序:
oc new-app web-clustering -e KUBERNETES_NAMESPACE=$(oc project -q) oc expose svc/web-clustering
$ oc new-app web-clustering -e KUBERNETES_NAMESPACE=$(oc project -q) $ oc expose svc/web-clusteringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须使用
KUBERNETES_NAMESPACE环境变量来查看当前 OpenShift 命名空间中的其他 pod;否则,服务器会尝试从默认命名空间中检索 pod。获取路由的 URL。
oc get route web-clustering --template='{{ .spec.host }}'$ oc get route web-clustering --template='{{ .spec.host }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一命令返回的 URL 访问 Web 浏览器中的应用。例如:
http://ROUTE_NAME/clustering
http://ROUTE_NAME/clusteringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意用户会话 ID 和用户创建时间。
将应用程序扩展为两个 pod:
oc scale --replicas=2 deployments web-clustering
$ oc scale --replicas=2 deployments web-clusteringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 发出以下命令来查看可用的 OpenShift pod 列表,并检查 pod 构建状态:
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc delete pod web-clustering-POD_NAME命令终止最旧的 pod,其中 POD_NAME 是您最旧 pod 的名称。 再次访问应用程序:
http://ROUTE_NAME/clustering
http://ROUTE_NAME/clusteringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期结果:新容器集生成的会话 ID 和创建时间与已终止 pod 的 相匹配。这表示启用了 Web 会话数据存储。
8.14. 使用 CLI 脚本为可引导 JAR 启用 HTTP 身份验证 复制链接链接已复制到粘贴板!
您可以使用 CLI 脚本为可引导 JAR 启用 HTTP 身份验证。此脚本将安全域和安全域添加到您的服务器。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 您已创建了 Maven 项目,设置父依赖项,并添加了用于创建需要 HTTP 身份验证的应用的依赖关系。请参阅 创建可引导 JAR Maven 项目。
重要在设置 Maven 项目时,您必须在 Maven archetype 配置中指定 HTTP 身份验证值。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties><properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
用于 Maven 插件版本的
流程
将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例显示了包含
elytron子系统的datasources-web-serverGalleon 层。更新
src/main/webapp/WEB-INF目录中的web.xml文件。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于存储 Java 文件的目录:
mkdir -p APPLICATION_ROOT/src/main/java/com/example/authentication/
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/authentication/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是 Maven 项目的根目录。创建包含以下内容的 Java 文件
TestServlet.java,并将文件保存到APPLICATION_ROOT/src/main/java/com/example/authentication/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CLI 脚本,如
authentication.cli,并将它保存在可引导 JAR 的可访问目录中,如APPLICATION_ROOT/scripts目录。该脚本必须包含以下命令:/subsystem=elytron/properties-realm=bootable-realm:add(users-properties={relative-to=jboss.server.config.dir, path=bootable-users.properties, plain-text=true}, groups-properties={relative-to=jboss.server.config.dir, path=bootable-groups.properties}) /subsystem=elytron/security-domain=BootableDomain:add(default-realm=bootable-realm, permission-mapper=default-permission-mapper, realms=[{realm=bootable-realm, role-decoder=groups-to-roles}]) /subsystem=undertow/application-security-domain=other:write-attribute(name=security-domain, value=BootableDomain)/subsystem=elytron/properties-realm=bootable-realm:add(users-properties={relative-to=jboss.server.config.dir, path=bootable-users.properties, plain-text=true}, groups-properties={relative-to=jboss.server.config.dir, path=bootable-groups.properties}) /subsystem=elytron/security-domain=BootableDomain:add(default-realm=bootable-realm, permission-mapper=default-permission-mapper, realms=[{realm=bootable-realm, role-decoder=groups-to-roles}]) /subsystem=undertow/application-security-domain=other:write-attribute(name=security-domain, value=BootableDomain)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下配置提取添加到插件
<configuration>元素中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例显示了
authentication.cliCLI 脚本,该脚本会将默认undertow安全域配置为为服务器定义的安全域。在 Maven 项目的根目录中创建一个目录,以存储 JBoss EAP JAR Maven 插件添加到可引导 JAR 的属性文件:
mkdir -p APPLICATION_ROOT/extra-content/standalone/configuration/
$ mkdir -p APPLICATION_ROOT/extra-content/standalone/configuration/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。此目录存储
可引导用户.properties 和可引导组.properties文件等文件。bootable-users.properties文件包含以下内容:testuser=bootable_password
testuser=bootable_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow bootable-groups.properties文件包含以下内容:testuser=Users
testuser=UsersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下
extra-content-content-dirs元素添加到现有的<configuration>元素中:<extra-server-content-dirs> <extra-content>extra-content</extra-content> </extra-server-content-dirs><extra-server-content-dirs> <extra-content>extra-content</extra-content> </extra-server-content-dirs>Copy to Clipboard Copied! Toggle word wrap Toggle overflow extra-content目录包含属性文件。将应用打包为可引导 JAR。
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动应用程序:
mvn wildfly-jar:run
mvn wildfly-jar:runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 调用 servlet,但不要指定凭证:
curl -v http://localhost:8080/hello
curl -v http://localhost:8080/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
HTTP/1.1 401 Unauthorized ... WWW-Authenticate: Basic realm="Example Realm"
HTTP/1.1 401 Unauthorized ... WWW-Authenticate: Basic realm="Example Realm"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 调用服务器并指定您的凭据。例如:
curl -v -u testuser:bootable_password http://localhost:8080/hello
$ curl -v -u testuser:bootable_password http://localhost:8080/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 返回 HTTP 200 状态,表示已为您的可引导 JAR 启用了 HTTP 身份验证。例如:
HTTP/1.1 200 OK .... Hello testuser
HTTP/1.1 200 OK .... Hello testuserCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.15. 使用红帽单点登录保护 JBoss EAP 可引导 JAR 应用程序 复制链接链接已复制到粘贴板!
您可以使用 Galleon keycloak-client-oidc 层来安装由 Red Hat Single Sign-On 7.4 OpenID Connect 客户端适配器置备的服务器版本。
keycloak-client-oidc 层为 Maven 项目提供红帽单点登录 OpenID Connect 客户端适配器。这个层包含在 Red Hat Single Sign -On 功能包的 keycloak-adapter-galleon-pack 中。
您可以将 keycloak-adapter-galleleon-pack 功能包添加到 JBoss EAP Maven 插件配置中,然后添加 keycloak-client-oidc。您可以通过访问支持 的配置来查看与 JBoss EAP 兼容的红帽单点登录客户端适配器:红帽单点登录 7.4 网页。
此流程中的示例演示了如何使用 keycloak-client-oidc 层提供的 JBoss EAP 功能来保护 JBoss EAP 可引导 JAR。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的微版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 -
您已检查了最新的 Red Hat Single Sign-On Galleon 功能包版本,如
org.jboss.sso:keycloak-adapter-galleon-pack:9.0.X:redhat-BUILD_NUMBER,其中X是红帽单点登录的微版本,它依赖于用于保护应用程序的红帽单点登录服务器版本, 和BUILD_NUMBER是红帽单点登录 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/sso/keycloak-adapter-galleon-pack 索引. - 您已创建了 Maven 项目,设置父依赖项,并添加了依赖项,以创建您希望通过红帽单点登录保护的应用程序。请参阅 创建可引导 JAR Maven 项目。
- 您有一个在端口 8090 上运行的红帽单点登录服务器。请参阅 启动红帽单点登录服务器。
您已登陆到 Red Hat Single Sign-On 管理控制台并创建了以下元数据:
-
名为
demo的域。 -
名为
Users的角色。 -
用户和密码.您必须为用户分配
Users角色。 具有根 URL
的公共客户端 Web应用。流程中的示例将simple-webapp定义为 Web 应用,http://localhost:8080/simple-webapp/secured定义为根 URL。重要在设置 Maven 项目时,您必须在 Maven archetype 中为您要通过红帽单点登录保护的应用程序指定值。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。 -
用于红帽单点登录功能包版本的
${Keycloak.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> <keycloak.feature.pack.version>9.0.10.redhat-00001</keycloak.feature.pack.version> </properties><properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> <keycloak.feature.pack.version>9.0.10.redhat-00001</keycloak.feature.pack.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
用于 Maven 插件版本的
-
名为
流程
将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Maven 插件调配部署 Web 应用所需的子系统和模块。
keycloak-client-oidc层通过使用keycloak子系统及其依赖项激活对红帽单点登录身份验证的支持,为项目提供红帽单点 OpenID Connect 客户端适配器。红帽单点登录客户端适配器是使用红帽单点登录保护应用程序和服务库。在项目的
pom.xml文件中,在插件配置中将<context-root> 设置为false。这会将应用注册到simple-webapp资源路径。默认情况下,WAR 文件在 root-context 路径下注册。<configuration> ... <context-root>false</context-root> ... </configuration><configuration> ... <context-root>false</context-root> ... </configuration>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CLI 脚本,如
configure-oidc.cli,并将它保存在可引导 JAR 的可访问目录中,如APPLICATION_ROOT/scripts目录,其中 APPLICATION_ROOT 是 Maven 项目的根目录。脚本必须包含类似以下示例的命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此脚本示例在
keycloak子系统中定义secure-deployment=simple-webapp.war资源。simple-webapp.war资源是在可引导 JAR 中部署的 WAR 文件的名称。在项目
pom.xml文件中,将以下配置提取添加到现有插件<configuration>元素中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
src/main/webapp/WEB-INF目录中的web.xml文件。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 除了第 7 到第 9 步外,您还可以通过将
keycloak.json描述符添加到 web 应用的WEB-INF目录,将服务器配置嵌入到 web 应用中。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,必须将 web 应用程序的
<auth-method>设置为KEYCLOAK。以下示例代码演示了如何设置<auth-method>:<login-config> <auth-method>KEYCLOAK</auth-method> <realm-name>Simple Realm</realm-name> </login-config><login-config> <auth-method>KEYCLOAK</auth-method> <realm-name>Simple Realm</realm-name> </login-config>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
SecuredServlet.java的 Java 文件,使其包含以下内容,并将文件保存到APPLICATION_ROOT/src/main/java/com/example/securedservlet/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将应用打包为可引导 JAR。
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动应用。以下示例从指定的可引导 JAR 路径启动
simple-webappweb 应用程序:java -jar target/simple-webapp-bootable.jar
$ java -jar target/simple-webapp-bootable.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在网页浏览器中指定以下 URL 以访问通过红帽单点登录保护的网页。以下示例显示了受保护的
simple-webappWeb 应用程序的 URL:http://localhost:8080/simple-webapp/secured
http://localhost:8080/simple-webapp/securedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 以红帽单点登录域中的用户身份登录。
验证: 检查网页是否显示以下输出:
Current Principal '<principal id>'
Current Principal '<principal id>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.16. 在 dev 模式下打包可引导 JAR 复制链接链接已复制到粘贴板!
JBoss EAP JAR Maven 插件开发 目标 提供 开发模式开发 模式,可用于增强应用程序开发流程。
在 dev 模式中,在更改应用程序后不需要重建可引导 JAR。
此流程中的工作流演示了使用 dev 模式配置可引导 JAR。
先决条件
- 已安装 Maven。
- 您已创建了 Maven 项目,设置父依赖项,并且添加了用于创建 MicroProfile 应用的依赖关系。请参阅 MicroProfile 配置开发。
-
您已在 Maven 项目
pom.xml文件中指定了 JBoss EAP JAR Maven 插件。
流程
在开发模式中构建并启动可引导 JAR:
mvn wildfly-jar:dev
$ mvn wildfly-jar:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
dev模式中,服务器部署扫描程序配置为监控目标/部署目录。提示 JBoss EAP Maven 插件使用以下命令构建应用程序并将其复制到
目标/部署目录中:mvn package -Ddev
$ mvn package -DdevCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打包在可引导 JAR 内的服务器将部署存储在
目标/部署目录中的应用。- 修改应用程序代码中的代码。
-
使用
mvn package -Ddev提示 JBoss EAP Maven 插件重新构建应用并重新部署。 停止服务器。例如:
mvn wildfly-jar:shutdown
$ mvn wildfly-jar:shutdownCopy to Clipboard Copied! Toggle word wrap Toggle overflow 完成应用程序更改后,将应用程序打包为可引导 JAR:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.17. 将 JBoss EAP 补丁应用到可引导 JAR 复制链接链接已复制到粘贴板!
在 JBoss EAP 裸机平台上,您可以使用 CLI 脚本将补丁安装到可引导 JAR。
CLI 脚本发出 patch apply 命令,以在可引导 JAR 构建期间应用补丁。
将补丁应用到可引导 JAR 后,您无法从应用的补丁中回滚。您必须在没有补丁的情况下重建可引导 JAR。
此外,您还可以利用 JBoss EAP JAR Maven 插件将传统补丁应用到可引导 JAR。此插件提供了一个 <legacy-patch-cli-script> 配置选项来引用用于修补服务器的 CLI 脚本。
<legacy 与将归档补丁应用到可引导 JAR 相关。此方法类似于将补丁应用到常规 JBoss EAP 分发。
-patch-cli-script> 中的前缀 legacy- *
您可以通过移除未使用的补丁内容,使用 JBoss EAP JAR Maven 插件配置中的 legacy-patch-cleanup 选项来减少可引导 JAR 的内存占用。选项可删除未使用的模块依赖项。在补丁配置文件中,此选项默认设置为 false。
legacy-patch-cleanup 选项会删除以下补丁内容:
-
<JBOSS_HOME>/.installation/patches目录。 - 基础层中补丁模块的原始位置.
- 未使用的模块,这些模块由补丁添加且没有在现有模块图形或补丁的模块图中引用。
-
覆盖未在
.overlays文件中列出的目录。
legacy-patch-clean-up 选项变量作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
此流程中概述的信息还与可引导的 JAR 相关。
先决条件
- 您已在 红帽客户门户网站 中设置了帐户。
您已从产品下载页面 下载了 以下文件:
- JBoss EAP 7.4.4 GA 补丁
- JBoss EAP XP 3.0.0 补丁
流程
创建一个 CLI 脚本,以定义您要应用到可引导 JAR 的旧修补程序。脚本必须包含一个或多个 patch apply 命令。在修补使用 Galleon 层修剪的服务器时,需要
--override-all命令,例如:patch apply patch-oneoff1.zip --override-all patch apply patch-oneoff2.zip --override-all patch info --json-output
patch apply patch-oneoff1.zip --override-all patch apply patch-oneoff2.zip --override-all patch info --json-outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
pom.xml文件的<legacy-patch-cli-script>元素中引用您的 CLI 脚本。 - 重新构建可引导 JAR.
第 9 章 reference 复制链接链接已复制到粘贴板!
9.1. MicroProfile 配置参考 复制链接链接已复制到粘贴板!
9.1.1. 默认 MicroProfile 配置属性 复制链接链接已复制到粘贴板!
MicroProfile 配置规范 默认定义三种 ConfigSource。
ConfigSources 根据序号进行排序。如果以后的部署必须覆盖配置,则在较高序 ConfigSource 前覆盖了低序 ConfigSource。
ConfigSource | ordinal |
|---|---|
| 系统属性 |
|
| 环境变量 |
|
|
类路径上找到的属性文件 |
|
9.1.2. MicroProfile Config SmallRye ConfigSources 复制链接链接已复制到粘贴板!
The microprofile-config-smallrye 项目定义了除默认的 MicroProfile Config ConfigSources 之外还可使用的更多 ConfigSource。
ConfigSource | ordinal |
|---|---|
|
子系统 |
|
|
来自 |
|
|
来自类的 |
|
没有为这些 ConfigSources 指定显式的序数。它们继承 MicroProfile 配置规范中找到的默认 ordinal 值。
9.2. MicroProfile 容错参考 复制链接链接已复制到粘贴板!
9.2.1. MicroProfile 容错配置属性 复制链接链接已复制到粘贴板!
SmallRye Fault Tolerance 规范除 MicroProfile 容错规范中定义的属性外,还定义了下列属性:
| 属性 | 默认值 | Description |
|---|---|---|
|
|
| 容错机制使用的线程数。这不包括舱壁线程池。 |
|
|
| 用于调度超时的线程池的大小。 |
9.3. MicroProfile JWT 参考 复制链接链接已复制到粘贴板!
9.3.1. MicroProfile 配置 JWT 标准属性 复制链接链接已复制到粘贴板!
The microprofile-jwt-smallrye 子系统支持下列 MicroProfile 配置标准属性:
| 属性 | 默认 | Description |
|---|---|---|
| mp.jwt.verify.publickey | NONE |
使用其中一个支持的格式编码公钥的字符串表示。如果您有 set |
| mp.jwt.verify.publickey.location | NONE |
公钥的位置,可以是相对路径或 URL。如果您有 set |
| mp.jwt.verify.issuer | NONE |
被验证的任何 JWT 令牌的预期值 |
示例 microprofile-config.properties 配置:
mp.jwt.verify.publickey.location=META-INF/public.pem mp.jwt.verify.issuer=jwt-issuer
mp.jwt.verify.publickey.location=META-INF/public.pem
mp.jwt.verify.issuer=jwt-issuer
9.4. MicroProfile OpenAPI 参考 复制链接链接已复制到粘贴板!
9.4.1. MicroProfile OpenAPI 配置属性 复制链接链接已复制到粘贴板!
除了标准的 MicroProfile OpenAPI 配置属性外,JBoss EAP 还支持以下额外的 MicroProfile OpenAPI 属性:这些属性可同时应用到全局范围和应用范围。
| 属性 | 默认值 | Description |
|---|---|---|
|
|
| 启用或禁用注册 OpenAPI 端点。
当设置为
您可以将此属性参数化为在不同环境中有选择地启用或禁用 您可以使用此属性来控制与给定虚拟主机关联的应用应生成 MicroProfile OpenAPI 模型。 |
|
|
| 您可以使用此属性为与虚拟主机关联的多个应用程序生成 OpenAPI 文档。
在与同一虚拟主机关联的每个应用程序上设置一个 distinct |
|
|
| 指明自动生成的服务器记录是绝对还是相对于 OpenAPI 端点的位置。 需要服务器记录才能确保在存在非根上下文路径的情况下,OpenAPI 文档的用户可以相对于 OpenAPI 端点的主机构建到 REST 服务的有效 URL。
值
如果设置为 |