使用 JBoss EAP XP 5.0
用于 JBoss EAP XP 5.0
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
提供有关 JBoss EAP 文档的反馈 复制链接链接已复制到粘贴板!
要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。
流程
- 单击以下链接 来创建 ticket。
- 在 Summary 中输入有关此问题的简单描述。
- 在描述中提供问题或增强功能的详细描述。请包括有问题的文档 URL。
- 点 Submit 创建问题并将其路由到适当的文档团队。
第 1 章 JBoss EAP XP 用于最新的 MicroProfile 功能 复制链接链接已复制到粘贴板!
1.1. 在没有预先存在的 JBoss EAP 8.0 服务器的情况下安装 JBoss EAP XP 5.0 复制链接链接已复制到粘贴板!
如果要在不预安装 JBoss EAP 8.0 服务器的情况下安装 JBoss EAP XP 5.0,请按照以下步骤操作。
先决条件
- 您可以访问互联网。
- 您已在红帽客户门户网站中创建了一个帐户,并已登录。
-
您已下载了
jboss-eap-installation-manager。
从 Update 02 或更高版本使用 jboss-eap-installation-manager。从红帽客户门户网站上的 JBoss EAP 8.0 补丁页下载正确的版本,或者运行以下命令来更新现有安装:
./bin/jboss-eap-installation-manager.sh update perform --self
./bin/jboss-eap-installation-manager.sh update perform --self
运行以下命令,验证安装管理器的版本:
./bin/jboss-eap-installation-manager.sh --version
./bin/jboss-eap-installation-manager.sh --version
流程
-
打开终端模拟器,再导航到
jboss-eap-installation-manager目录。 从
jboss-eap-installation-manager目录运行以下命令来安装 JBoss EAP XP:./bin/jboss-eap-installation-manager.sh install --profile eap-xp-5.0 --dir eap-xp-5
./bin/jboss-eap-installation-manager.sh install --profile eap-xp-5.0 --dir eap-xp-5Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 将 JBoss EAP XP 5.0 功能软件包添加到现有 JBoss EAP 8.0 安装中 复制链接链接已复制到粘贴板!
您可以使用 jboss-eap-installation-manager 将额外的 JBoss EAP XP 5.0 功能 pack 添加到现有的 JBoss EAP 安装中。
先决条件
安装 JBoss EAP XP 扩展将自动执行服务器更新,以接收最新的组件更新。
流程
-
打开终端模拟器,再导航到
jboss-eap-installation-manager目录。 从
jboss-eap-installation-manager目录运行此脚本,通过执行以下命令将服务器订阅到 JBoss EAP XP 频道:./bin/jboss-eap-installation-manager.sh channel add \ --channel-name eap-xp-5.0 \ --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \ --manifest org.jboss.eap.channels:eap-xp-5.0 \ --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh channel add \ --channel-name eap-xp-5.0 \ --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \ --manifest org.jboss.eap.channels:eap-xp-5.0 \ --dir eap-xp-5.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过执行以下操作安装 JBoss EAP XP 扩展:
./bin/jboss-eap-installation-manager.sh feature-pack add \ --fpl org.jboss.eap.xp:wildfly-galleon-pack \ --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh feature-pack add \ --fpl org.jboss.eap.xp:wildfly-galleon-pack \ --dir eap-xp-5.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 将 JBoss EAP XP 5.0 功能软件包添加到现有 JBoss EAP 8.0 安装中 复制链接链接已复制到粘贴板!
您可以使用 jboss-eap-installation-manager 将其他 JBoss EAP XP 5.0 功能 pack 添加到现有的 JBoss EAP 安装中。
先决条件
流程
-
打开终端模拟器,再导航到
jboss-eap-installation-manager目录。 -
从
jboss-eap-installation-manager目录运行此脚本,通过执行以下命令将服务器订阅到 JBoss EAP XP 频道:
./bin/jboss-eap-installation-manager.sh channel add \ --channel-name eap-xp-5.0 \ --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \ --manifest org.jboss.eap.channels:eap-xp-5.0 \ --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh channel add \
--channel-name eap-xp-5.0 \
--repositories=mrrc-ga::https://maven.repository.redhat.com/ga \
--manifest org.jboss.eap.channels:eap-xp-5.0 \
--dir eap-xp-5.0
-
安装 JBoss EAP XP 并使用--
repositories 参数指定离线存储库:
./bin/jboss-eap-installation-manager.sh feature-pack add \ --fpl org.jboss.eap.xp:wildfly-galleon-pack \ --dir eap-xp-5.0 \ --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
./bin/jboss-eap-installation-manager.sh feature-pack add \
--fpl org.jboss.eap.xp:wildfly-galleon-pack \
--dir eap-xp-5.0 \
--repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
功能包将添加到 JBoss EAP 安装中,并传递在-- dir 选项中。
1.4. 使用 jboss-eap-installation-manager更新 JBoss EAP XP 安装 复制链接链接已复制到粘贴板!
如果在下载并安装新更新后,您可以定期更新 JBoss EAP XP。
先决条件
流程
-
提取您下载的
jboss-eap-installation-manager。 -
打开终端模拟器,再前往您提取的
jboss-eap-installation-manager目录。 从
jboss-eap-installation-manager目录运行此脚本,以检查可用的更新:./bin/jboss-eap-installation-manager.sh update list --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh update list --dir eap-xp-5.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来更新 JBoss EAP:
语法
./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0 Updates found: org.wildfly.galleon-plugins:wildfly-galleon-plugins 6.3.1.Final-redhat-00001 ==> 6.3.2.Final-redhat-00001 org.wildfly.wildfly-http-client:wildfly-http-transaction-client 2.0.1.Final-redhat-00001 ==> 2.0.2.Final-redhat-00001
./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0 Updates found: org.wildfly.galleon-plugins:wildfly-galleon-plugins 6.3.1.Final-redhat-00001 ==> 6.3.2.Final-redhat-00001 org.wildfly.wildfly-http-client:wildfly-http-transaction-client 2.0.1.Final-redhat-00001 ==> 2.0.2.Final-redhat-00001Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用 jboss-eap-installation-manager 离线更新 JBoss EAP XP 5.0 安装。
先决条件
流程
- 停止 JBoss EAP 服务器。
-
打开终端模拟器,再导航到
jboss-eap-installation-manager目录。 从
jboss-eap-installation-manager目录运行此脚本,以更新服务器组件:./bin/jboss-eap-installation-manager.sh update perform \ --dir eap-xp-5.0 \ --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<FEATURE_PACK_OFFLINE_REPO>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
./bin/jboss-eap-installation-manager.sh update perform \ --dir eap-xp-5.0 \ --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<FEATURE_PACK_OFFLINE_REPO>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
1.6. 将您的 JBoss EAP XP 服务器恢复到 JBoss EAP 复制链接链接已复制到粘贴板!
您可以使用 jboss-eap-installation-manager 恢复您的 JBoss EAP XP 安装。
先决条件
流程
-
打开终端模拟器,再导航到
jboss-eap-installation-manager目录。 从
jboss-eap-installation-manager目录运行此脚本,以调查添加到 JBoss EAP XP 服务器的所有功能包的历史记录:./bin/jboss-eap-installation-manager.sh history --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh history --dir eap-xp-5.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 停止 JBoss EAP XP 服务器。
在添加 JBoss EAP XP 扩展前将您恢复到一个版本:
./bin/jboss-eap-installation-manager.sh revert perform \ --revision <REVISION_HASH> \ --dir eap-xp-5.0
./bin/jboss-eap-installation-manager.sh revert perform \ --revision <REVISION_HASH> \ --dir eap-xp-5.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关如何执行两个阶段恢复操作的更多信息,请参阅恢复安装的功能软件包
第 2 章 了解 MicroProfile 复制链接链接已复制到粘贴板!
2.1. MicroProfile Config 复制链接链接已复制到粘贴板!
2.1.1. JBoss EAP 中的 MicroProfile 配置 复制链接链接已复制到粘贴板!
配置数据可能会动态更改,应用程序需要能够在不重启服务器的情况下访问最新的配置信息。
MicroProfile 配置提供配置数据的可移植外部化。这意味着,您可以将应用程序和微服务配置为在多个环境中运行,而无需修改或重新打包。
MicroProfile 配置功能在 JBoss EAP 中使用 SmallRye Config 组件实施,由 microprofile-config-smallrye 子系统提供。
MicroProfile 配置仅在 JBoss EAP XP 中受支持。JBoss EAP 不支持它。
如果要添加自己的配置实现,则需要在最新版本的 Config 接口中使用方法。
2.1.2. MicroProfile 配置支持的 MicroProfile 配置源 复制链接链接已复制到粘贴板!
MicroProfile 配置属性可以来自不同的位置,可以采用不同的格式。这些属性由 ConfigSources 提供。ConfigSources 是 org.eclipse.microprofile.config.spi.ConfigSource 接口的实现。
MicroProfile Config 规范提供以下默认 ConfigSource 实施来检索配置值:
-
System.getProperties(). -
system.getenv (). -
类路径上的所有
META-INF/microprofile-config.properties文件。
microprofile-config-smallrye 子系统支持其他类型的 ConfigSource 资源,以检索配置值。您还可以从以下资源中检索配置值:
-
microprofile-config-smallrye/config-source管理资源中的属性 - 目录中的文件
-
ConfigSource类 -
ConfigSourceProvider类
2.2. MicroProfile Fault Tolerance 复制链接链接已复制到粘贴板!
2.2.1. 关于 MicroProfile Fault Tolerance 规范 复制链接链接已复制到粘贴板!
MicroProfile 容错规范定义了处理分布式微服务中固有错误的策略。
MicroProfile Fault Tolerance 规范定义了以下策略来处理错误:
- Timeout(超时)
- 定义执行必须完成的时间。定义超时可防止无限期等待执行。
- Retry
- 定义重试失败执行的条件。
- fallback
- 在执行失败时提供替代方法。
- CircuitBreaker
- 定义在临时停止前失败的执行尝试数量。您可以在恢复执行前定义延迟的长度。
- 壁壁
- 在系统的一部分隔离故障,以便系统的其余部分仍然可以正常工作。
- 异步
- 在单独的线程中执行客户端请求。
2.2.2. JBoss EAP 中的 MicroProfile Fault Tolerance 复制链接链接已复制到粘贴板!
microprofile-fault-tolerance-smallrye 子系统为 JBoss EAP 中的 MicroProfile Fault Tolerance 提供支持。该子系统仅适用于 JBoss EAP XP 流。
microprofile-fault-tolerance-smallrye 子系统为拦截器绑定提供以下注解:
-
@Timeout -
@Retry -
@Fallback -
@CircuitBreaker -
@bulkhead -
@Asynchronous
您可以在类级别或方法级别绑定这些注解。与类绑定的注解适用于该类的所有业务方法。
以下规则适用于绑定拦截器:
如果组件类声明或继承类级拦截器绑定,则应用以下限制:
- 不得声明该类。
- 类不得包含任何静态、私有或最终方法。
- 如果组件类的非静态的、非专用方法声明方法级拦截器绑定,则方法和组件类都不会被声明。
容错操作有以下限制:
- 容错拦截器绑定必须应用到 bean 类或 bean 类方法。
- 调用时,调用必须是 Jakarta 上下文和依赖注入规范中定义的业务方法调用。
如果这两个条件都满足,则操作不会被视为容错性:
- 方法本身不绑定到任何容错拦截器。
- 包含方法的类没有绑定到任何容错拦截器。
microprofile-fault-tolerance-smallrye 子系统还提供以下配置选项,以及 MicroProfile Fault Tolerance 提供的配置选项:
-
io.smallrye.faulttolerance.mainThreadPoolSize -
io.smallrye.faulttolerance.mainThreadPoolQueueSize
2.3. MicroProfile Health 复制链接链接已复制到粘贴板!
2.3.1. JBoss EAP 中的 MicroProfile 健康 复制链接链接已复制到粘贴板!
JBoss EAP 包含 SmallRye Health 组件,您可以使用它来确定 JBoss EAP 实例是否按预期响应。这个功能会被默认启用。
MicroProfile Health 仅在将 JBoss EAP 作为单机服务器运行时可用。
MicroProfile 健康规范定义以下健康检查:
- 就绪
-
确定应用是否准备好处理请求。注释
@Readiness提供此健康检查。 - Liveness
-
确定应用程序是否正在运行。注释
@Liveness提供此健康检查。 - 启动
-
确定应用程序是否已启动。注释
@Startup提供此健康检查。
MicroProfile Health 3.0 中删除了 @Health 注释。
MicroProfile Health 3.1 包括一个新的 启动 健康检查探测。
有关 MicroProfile Health 3.1 中的更改的更多信息,请参阅 MicroProfile Health 3.1 的发行说明。
:empty-readiness-checks-status,:empty-liveness-checks-status, 和 :empty-startup-checks-status 管理属性在没有定义 就绪度、存活度 或 启动探测 时指定全局状态。
2.4. MicroProfile JWT 复制链接链接已复制到粘贴板!
2.4.1. JBoss EAP 中的 MicroProfile JWT 集成 复制链接链接已复制到粘贴板!
子系统 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 部署不依赖于受管理的 SecurityDomain 资源,如传统 JBoss EAP 部署。相反,会在 MicroProfile JWT 部署中创建并使用虚拟 SecurityDomain。
由于 MicroProfile JWT 部署完全在 MicroProfile 配置属性和 microprofile-jwt-smallrye 子系统内配置,因此虚拟 SecurityDomain 不需要任何其他受管配置。
2.4.3. JBoss EAP 中的 MicroProfile JWT 激活 复制链接链接已复制到粘贴板!
MicroProfile JWT 根据应用中存在 auth-method 的应用激活。
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 Key Set (JWKS)中的第一个密钥。因此,如果令牌声明在第二个密钥后由第二个密钥或任何密钥签名,令牌将无法验证,且包含令牌的请求不会被授权。 - 不支持 JWKS 的 Base64 编码。
在这两种情况下,可以引用明文 JWKS,而不使用 mp.jwt.verify.publickey.location 配置属性。
2.5. MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
2.5.1. JBoss EAP 中的 MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
MicroProfile OpenAPI 使用 microprofile-openapi-smallrye 子系统在 JBoss EAP 中集成。
MicroProfile OpenAPI 规范定义提供 OpenAPI 3.0 文档的 HTTP 端点。OpenAPI 3.0 文档描述了主机的 REST 服务。OpenAPI 端点使用配置的路径注册,例如 http://localhost:8080/openapi,位于与部署关联的主机的 root 中。
目前,虚拟主机的 OpenAPI 端点只能记录单个部署。要将 OpenAPI 与同一虚拟主机上使用不同上下文路径注册的多个部署一起使用,每个部署都必须使用不同的端点路径。
OpenAPI 端点默认返回一个 YAML 文档。您还可以使用 Accept HTTP 标头或格式查询参数来请求 JSON 文档。
如果给定应用的 Undertow 服务器或主机定义了 HTTPS 侦听器,则使用 HTTPS 提供 OpenAPI 文档。例如,HTTPS 的端点是 https://localhost:8443/openapi。
2.6. MicroProfile Telemetry 复制链接链接已复制到粘贴板!
2.6.1. JBoss EAP 中的 MicroProfile Telemetry 复制链接链接已复制到粘贴板!
MicroProfile Telemetry 基于 OpenTelemetry 为应用提供追踪功能。能够跨服务边界跟踪请求非常重要,特别是在请求在其生命周期内通过多个服务进行流动的微服务环境中。
MicroProfile Telemetry 在 OpenTelemetry 子系统上扩展,并添加对 MicroProfile 配置的支持。这样,用户可以使用 MicroProfile 配置来配置 OpenTelemetry。
MicroProfile Telemetry 子系统中没有可配置的资源或属性。
2.7. MicroProfile REST Client 复制链接链接已复制到粘贴板!
2.7.1. MicroProfile REST 客户端 复制链接链接已复制到粘贴板!
JBoss EAP XP 5.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)
MicroProfile Config 是规范的名称,开发人员可以用于配置应用和微服务在多个环境中运行,而无需修改或重新打包这些应用程序。在以前的版本中,MicroProfile Config 作为技术预览提供 JBoss EAP,但自此后已被删除。MicroProfile 配置现在仅适用于 JBoss EAP XP。
定义 resteasy.original.webapplicationexception.behavior MicroProfile Config 属性
您可以将 resteasy.original.webapplicationexception.behavior 参数设置为 web.xml servlet 属性或系统属性。以下是 web.xml 中的一个此类 servlet 属性的示例:
<context-param>
<param-name>resteasy.original.webapplicationexception.behavior</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>resteasy.original.webapplicationexception.behavior</param-name>
<param-value>true</param-value>
</context-param>
您还可以使用 MicroProfile 配置来配置任何其他 RESTEasy 属性。
2.8. MicroProfile 被动消息 复制链接链接已复制到粘贴板!
2.8.1. MicroProfile 被动消息 复制链接链接已复制到粘贴板!
当您升级到 JBoss EAP XP 5.0.0 时,您可以启用 MicroProfile 被动消息的最新版本,其中包括被动消息扩展和子系统。
"主动流"是事件数据的连续性,以及处理协议和标准,这些边界在异步边界(如调度程序)之间推送,无需任何缓冲。例如,"event"可能是一次调度并重复温度检查,例如:被动流的主要优点是各种应用程序和实现的无缝互操作性。
主动消息传递提供了一个框架,用于构建事件驱动的、数据流和事件源应用程序。被动消息会导致事件数据(被动流)从一个应用程序到另一个应用程序进行持续、平稳的交换。您可以通过被动流将 MicroProfile 被动消息用于异步消息传递,以便您的应用可以和 Apache Kafka 等其他交互。
将 MicroProfile 主动消息传递实例升级到最新版本后,您可以执行以下操作:
- 为 Apache Kafka 数据流平台置备带有 MicroProfile 被动消息的服务器。
- 通过最新的被动消息传递 API 与被动消息传递内存交互,并由 Apache Kafka 主题支持。
- 使用任何可用指标系统来确定给定频道中流的消息数量。
2.8.2. MicroProfile 被动消息连接器 复制链接链接已复制到粘贴板!
您可以使用连接器将 MicroProfile 被动消息与多个外部消息传递系统集成。适用于 JBoss EAP 的 MicroProfile 附带 Apache Kafka 连接器和高级消息队列协议(AMQP)连接器。使用 Eclipse MicroProfile 配置规范来配置您的连接器。
MicroProfile 被动消息连接器并纳入了层
MicroProfile 被动消息传递包括以下连接器:
Kafka 连接器
microprofile-reactive-messaging-kafka层包含 Kafka 连接器。AMQP 连接器
microprofile-reactive-messaging-amqp层包含 AMQP 连接器。
两个连接器层都包含 microprofile-reactive-messaging Galleon 层。microprofile-reactive-messaging 层提供核心 MicroProfile 被动消息传递功能。
| layer | 定义 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
2.8.3. Apache Kafka 事件流平台 复制链接链接已复制到粘贴板!
Apache Kafka 是一个开源分布式事件(数据)流平台,可实时发布、订阅、存储和流程记录流。它处理来自多个源的事件流,并将其传送到多个消费者,将大量数据从点 A 移到 Z,并同时将大量数据移到 Z。MicroProfile 被动消息传递使用 Apache Kafka 在几秒内提供这些事件记录,将它们安全地存储在分布式、容错型集群中,同时保持它们可在任何团队定义的区域或地理区域中可用。
第 3 章 在 JBoss EAP 中管理 MicroProfile 复制链接链接已复制到粘贴板!
3.1. MicroProfile 遥测管理 复制链接链接已复制到粘贴板!
3.1.1. 使用管理 CLI 添加 MicroProfile Telemetry 子系统 复制链接链接已复制到粘贴板!
MicroProfile 遥测组件通过 microprofile-telemetry 子系统集成到默认的 MicroProfile 配置中。如果尚未包含子系统,您还可以使用管理 CLI 添加 MicroProfile 遥测子系统。
先决条件
- 在添加 MicroProfile Telemetry 子系统之前,必须将 OpenTelemetry 子系统添加到配置中。MicroProfile 遥测子系统依赖于 OpenTelemetry 子系统。
流程
- 打开终端。
运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. 启用 MicroProfile Telemetry 子系统 复制链接链接已复制到粘贴板!
MicroProfile Telemetry 默认为禁用,必须基于每个应用程序启用。
先决条件
- MicroProfile Telemetry 子系统已添加到配置中。
- OpenTelemetry 子系统已添加到配置中。
流程
-
打开
microprofile-config.properties文件。 将
otel.sdk.disabled属性设置为false:otel.sdk.disabled=false
otel.sdk.disabled=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. 使用 MicroProfile 配置覆盖服务器配置 复制链接链接已复制到粘贴板!
您可以使用 MicroProfile Config 覆盖 MicroProfile Telemetry 子系统中个别应用的服务器配置。
例如,导出的 trace 中使用的服务名称与部署存档相同。如果部署存档设置为 my-application-1.0.war,则服务名称将相同。要覆盖此配置,您可以更改配置文件中的 otel.service.name 属性的值:
otel.service.name=My Application
otel.service.name=My Application
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. 将根目录配置为 ConfigSources 复制链接链接已复制到粘贴板!
您可以使用 root 属性将目录定义为多个 MicroProfile ConfigSource 目录 的根目录。
嵌套的 root 属性是 /subsystem=microprofile-config-smallrye/config-source swig 资源的 dir complex 属性的一部分。如果共享同一根目录,这消除了需要指定多个 ConfigSource 目录。
直接根目录中的任何文件都会被忽略。它们将不会用于配置。顶级目录被视为 ConfigSources。任何嵌套的目录也会被忽略。
默认情况下,顶层目录的 ConfigSources 被分配 /subsystem=microprofile-config-smallrye/config-source resources 的 ordinal。
如果顶级目录包含 config_ordinal 文件,则文件中指定的值将 覆盖默认值 ordinal 值。如果具有相同 ordinal 的两个顶级目录包含同一条目,则目录的名称将按字母顺序排序,并使用第一个目录。
先决条件
-
已安装 MicroProfile Config 扩展,并启用了
microprofile-config-smallrye子系统。
流程
- 打开终端。
创建要存储文件的目录:
mkdir -p ~/etc/config/prop-files/
mkdir -p ~/etc/config/prop-files/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入您创建的目录:
cd ~/etc/config/prop-files/
cd ~/etc/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 在 CLI 中运行以下命令,创建一个 ConfigSource,其中 filename 是属性,且文件包含属性值:
/subsystem=microprofile-config-smallrye/config-source=prop-files:add(dir={path=/etc/config, root=true})/subsystem=microprofile-config-smallrye/config-source=prop-files:add(dir={path=/etc/config, root=true})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会导致 XML 配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.4. 从 ConfigSource 类获取 ConfigSource 复制链接链接已复制到粘贴板!
您可以创建并配置自定义 org.eclipse.microprofile.config.spi.ConfigSource 实施类,以便为配置值提供源。
流程
以下管理 CLI 命令为名为
org.example.MyConfigSource的实施类创建一个ConfigSource,它由名为org.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.5. 从 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 的实现类创建一个名为
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 部署。
3.3. MicroProfile Fault Tolerance 配置 复制链接链接已复制到粘贴板!
3.3.1. 添加 MicroProfile Fault Tolerance 扩展 复制链接链接已复制到粘贴板!
MicroProfile Fault Tolerance 扩展包含在 standalone-microprofile.xml 和 standalone-microprofile-ha.xml 配置中,它们作为 JBoss EAP XP 的一部分提供。
扩展不包含在标准 standalone.xml 配置中。要使用扩展,您必须手动启用它。
先决条件
- 已安装带有 JBoss EAP XP 5.0 的 JBoss EAP 8.0。
流程
使用以下管理 CLI 命令添加 MicroProfile Fault Tolerance 扩展:
/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 使用以下 managenent 命令启用
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-enabled属性设置为true。/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 5.0.0 支持三个就绪度探测来确定服务器健康和就绪状态。
-
当 server-state
运行时,server-status- 返回UP。 -
当探测没有检测到引导错误时,
boot-errors- 返回UP。 -
当所有部署的状态为- 返回OK时,Deployment-statusUP。
这些就绪度探测默认为启用。您可以使用 MicroProfile Config 属性 mp.health.disable-default-procedures 禁用探测。
以下示例演示了在 check 操作中使用三个探测:
3.4.6. 没有定义探测时的全局状态 复制链接链接已复制到粘贴板!
:empty-readiness-checks-status,:empty-liveness-checks-status, 和 :empty-startup-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 如果未定义启动探测,则
:empty-属性指定startup-checks-status启动探测的全局状态:/subsystem=microprofile-health-smallrye:read-attribute(name=empty-startup-checks-status) { "outcome" => "success", "result" => expression "${env.MP_HEALTH_EMPTY_STARTUP_CHECKS_STATUS:UP}" }/subsystem=microprofile-health-smallrye:read-attribute(name=empty-startup-checks-status) { "outcome" => "success", "result" => expression "${env.MP_HEALTH_EMPTY_STARTUP_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 子系统提供,并包含在默认配置中。如果默认配置中没有子系统,您可以添加它,如下所示:
先决条件
- 已安装带有 JBoss EAP XP 5.0 的 JBoss EAP 8.0。
流程
在 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
microprofile-jwt-smallrye 子系统已启用。
3.6. MicroProfile OpenAPI 管理 复制链接链接已复制到粘贴板!
3.6.1. 启用 MicroProfile OpenAPI 复制链接链接已复制到粘贴板!
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
microprofile-openapi-smallrye 子系统已启用。
3.6.2. 使用 Accept HTTP 标头请求 MicroProfile OpenAPI 文档 复制链接链接已复制到粘贴板!
使用 Accept HTTP 标头从部署请求 MicroProfile OpenAPI 文档。
默认情况下,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.6.3. 使用 HTTP 参数请求 MicroProfile OpenAPI 文档 复制链接链接已复制到粘贴板!
使用 HTTP 请求中的查询参数,从部署请求以 JSON 格式请求 MicroProfile OpenAPI 文档。
默认情况下,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.6.4. 配置 JBoss EAP 以提供静态 OpenAPI 文档 复制链接链接已复制到粘贴板!
配置 JBoss EAP 以提供描述主机的 REST 服务的静态 OpenAPI 文档。
当 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.6.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.7. MicroProfile Reactive 消息传递管理 复制链接链接已复制到粘贴板!
3.7.1. 为 JBoss EAP 配置所需的 MicroProfile 被动消息传递扩展和子系统 复制链接链接已复制到粘贴板!
如果要启用 JBoss EAP 实例的异步被动消息传递,您必须通过 JBoss EAP 管理 CLI 添加其扩展。
先决条件
- 您添加了带有 SmallRye 扩展和子系统的 Reactive Streams Operator。如需更多信息,请参阅 MicroProfile Reactive Streams Operators Subsystem Configuration: Required Extension。
- 您添加了使用 SmallRye 扩展和子系统的 Reactive Messaging。
流程
- 打开 JBoss EAP 管理 CLI。
- 输入以下代码:
如果您使用 Galleon 在 OpenShift 上置备服务器,请确保包含 microprofile-reactive-messaging Galleon 层来获取核心 MicroProfile 2.0.1 和被动消息传递功能,以及启用所需的子系统和扩展。请注意,此配置不包含启用连接器所需的 JBoss EAP 模块。使用 microprofile-reactive-messaging-kafka 层或 microprofile-reactive-messaging-amqp 层分别启用 Kafka 连接器或 AMQP 连接器。
验证
如果您在管理 CLI 的两个位置中看到 成功,则已成功为 JBoss EAP 添加了所需的 MicroProfile 被动消息传递扩展和子系统。
如果生成的代码显示 reload-required,您必须重新加载服务器配置以完全应用所有更改。要重新加载,请在单机服务器 CLI 中输入 reload。
3.8. 独立服务器配置 复制链接链接已复制到粘贴板!
3.8.1. 独立服务器配置文件 复制链接链接已复制到粘贴板!
JBoss EAP XP 包括额外的单机服务器配置文件 standalone-microprofile.xml 和 standalone-microprofile-ha.xml。
JBoss EAP 中包含的标准配置文件保持不变。请注意,JBoss EAP XP 5.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-config-smallrye -
microprofile-fault-tolerance-smallrye -
microprofile-health-smallrye -
microprofile-jwt-smallrye -
microprofile-openapi-smallrye
enable-microprofile.cli 脚本输出修改的高级描述。配置使用 elytron 子系统进行保护。security 子系统(如果存在)已从配置中删除。
先决条件
- 已安装带有 JBoss EAP XP 5.0 的 JBoss EAP 8.0。
流程
运行以下 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 应用程序 复制链接链接已复制到粘贴板!
要开始开发使用 MicroProfile API 的应用,请创建一个 Maven 项目并定义所需的依赖项。使用 JBoss EAP MicroProfile Bill of Materials (BOM)来控制应用项目对象模型(POM)中的运行时 Maven 依赖项版本。
创建 Maven 项目后,请参考 JBoss EAP XP Quickstarts,以了解有关为特定 MicroProfile API 开发应用的信息。如需更多信息,请参阅 JBoss EAP XP Quickstarts。
4.1. 使用 maven-archetype-webapp创建 Maven 项目 复制链接链接已复制到粘贴板!
使用 maven-archetype-webapp archetype 创建一个 Maven 项目,用于构建用于 JBoss EAP 部署的应用程序。Maven 根据特定于项目类型的模板,为创建项目提供不同的架构类型。maven-archetype-webapp 创建一个项目,其中包含开发简单 Web 应用所需的结构。
先决条件
- 您已安装了 Maven。如需更多信息,请参阅 下载 Apache Maven。
流程
使用
mvn命令设置 Maven 项目。该命令创建项目的目录结构以及pom.xml配置文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 进入生成的目录。
-
在文本编辑器中打开生成的
pom.xml配置文件。 在 <name&
gt;部分的内容。helloworld Maven Webapp</name> 行后,删除>pom.xml配置文件的 <project确保该文件类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除内容,因为应用程序不需要它。
4.2. 在 Maven 项目中定义属性 复制链接链接已复制到粘贴板!
您可以在 Maven pom.xml 配置文件中定义属性,以放置值拥有者。将 JBoss EAP XP 服务器的值定义为在配置中一致使用值的属性。
先决条件
您已初始化了 Maven 项目。
流程
定义属性 &
lt;version.bom.microprofile> 作为您要在其上部署配置的应用程序的 JBoss EAP XP 版本。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 在 Maven 项目中定义存储库 复制链接链接已复制到粘贴板!
定义工件和插件存储库,Maven 会在其中查找要下载的工件和插件。
先决条件
您已初始化了 Maven 项目。
4.4. 在 Maven 项目中作为依赖项管理导入 JBoss EAP MicroProfile BOM 复制链接链接已复制到粘贴板!
导入 JBoss EAP MicroProfile Bill of Materials (BOM),以控制运行时 Maven 依赖项的版本。当您在 < dependencyManagement& gt; 部分中指定 BOM 时,您不需要单独指定 提供 的范围中定义的 Maven 依赖项版本。
先决条件
您已初始化了 Maven 项目。
流程
在
pom.xml配置文件的 properties 部分中,为 BOM 版本添加属性。<properties> ... <version.bom.microprofile>5.0.0.GA-redhat-00009</version.bom.microprofile> </properties><properties> ... <version.bom.microprofile>5.0.0.GA-redhat-00009</version.bom.microprofile> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 属性 <
version.bom.microprofile> 中定义的值用作 BOM 版本的值。导入 JBoss EAP BOMs 依赖项管理。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
另外,您可以将带有 Tools Bill 的 JBoss EAP EE 导入到您的项目。如需更多信息,请参阅在 Maven 项目中导入 JBoss EAP BOMs 作为依赖项管理。
4.5. 在 Maven 项目中作为依赖项管理导入 JBoss EAP BOM 复制链接链接已复制到粘贴板!
您可以选择使用工具 Bill of materials (BOM)导入 JBoss EAP EE。JBoss EAP BOM 提供受支持的 JBoss EAP Java EE API 以及额外的 JBoss EAP API JAR 和客户端 BOM。只有在应用程序需要 Jakarta EE API 外,除了 Microprofile API 外,您只需要导入此 BOM。
先决条件
您已初始化了 Maven 项目。
流程
在
pom.xml配置文件的 properties 部分中,为 BOM 版本添加属性。<properties> .... <version.bom.ee>8.0.0.GA-redhat-00009</version.bom.ee> </properties><properties> .... <version.bom.ee>8.0.0.GA-redhat-00009</version.bom.ee> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导入 JBoss EAP BOMs 依赖项管理。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 在 Maven 项目中添加插件管理 复制链接链接已复制到粘贴板!
将 Maven 插件管理部分添加到 pom.xml 配置文件中,以获取 Maven CLI 命令所需的插件。
先决条件
您已初始化了 Maven 项目。
流程
在 <
properties> 部分中,定义wildfly-maven-plugin和maven-war-plugin的版本。<properties> ... <version.plugin.wildfly>4.2.1.Final</version.plugin.wildfly> <version.plugin.war>3.3.2</version.plugin.war> </properties><properties> ... <version.plugin.wildfly>4.2.1.Final</version.plugin.wildfly> <version.plugin.war>3.3.2</version.plugin.war> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 &
lt;; 部分。project> 部分的 &>lt;build> 部分添加 <pluginManagementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. 验证 maven 项目 复制链接链接已复制到粘贴板!
验证您配置的 Maven 项目。
先决条件
您已定义 Maven 属性。
如需更多信息,请参阅在 Maven 项目中定义属性。
您已定义了 Maven 存储库。
如需更多信息 ,请参阅在 Maven 项目中定义存储库。
您已导入了 JBoss EAP Bill of materials (BOM)作为依赖项管理。
有关更多信息,请参阅在 Maven 项目 中导入 JBoss EAP MicroProfile BOM 作为依赖项管理。
您已添加了插件管理。
如需更多信息,请参阅 为服务器 hello world 应用在 Maven 项目中添加插件管理。
流程
安装在本地的
pom.xml中添加的 Maven 依赖项。mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会看到类似如下的输出:
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关为特定 MicroProfile API 开发应用的更多信息,请参阅 JBoss EAP XP Quickstarts。
第 5 章 了解 Micrometer 集成 复制链接链接已复制到粘贴板!
5.1. JBoss EAP 中的 Micrometer 复制链接链接已复制到粘贴板!
JBoss EAP 中的微主题集成引入了一个厂商中立的可观察层,它带有一个可重复使用的 API,用于跨应用注册和跟踪性能指标。此扩展与 Micrometer 集成,允许已部署的应用访问其 API 并显示应用特定指标以及扩展提供的服务器指标。
JBoss EAP 使用现有的 日志记录子系统。您必须手动添加和配置此扩展。
第 6 章 在 JBoss EAP 中管理 Micrometer 复制链接链接已复制到粘贴板!
6.1. 使用管理 CLI 添加 Micrometer 子系统 复制链接链接已复制到粘贴板!
Micrometer 子系统通过促进全面的指标收集和发布,增强了 JBoss EAP 中的监控功能。但是,org.jboss.extension.micrometer 子系统可供 JBoss EAP 分发中的所有独立配置使用,但必须手动添加。
先决条件
- 已安装带有 JBoss EAP XP 5.0 的 JBoss EAP 8.0。
- 您可以访问 JBoss EAP 管理 CLI 和进行配置更改的权限。
流程
- 打开一个终端。
运行以下命令来连接到服务器:
./jboss-cli.sh --connect
./jboss-cli.sh --connectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 Micrometer 扩展是否已添加到配置中:
[standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:read-resource
[standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:read-resourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 Micrometer 扩展不可用,请运行以下命令来添加它:
[standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:add
[standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用所需的配置添加 Micrometer 子系统。例如,运行以下命令来指定指标收集器的端点 URL:
[standalone@localhost:9990 /] /subsystem=micrometer:add(endpoint="http://localhost:4318/v1/metrics")
[standalone@localhost:9990 /] /subsystem=micrometer:add(endpoint="http://localhost:4318/v1/metrics")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入服务器以应用更改:
[standalone@localhost:9990 /] reload
[standalone@localhost:9990 /] reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当收集器没有运行或者其收集器端点不可用时,会触发类似如下的警告信息:
11:28:16,581 WARNING [io.micrometer.registry.otlp.OtlpMeterRegistry] (MSC service thread 1-5) Failed to publish metrics to OTLP receiver: java.net.ConnectException: Connection refused
11:28:16,581 WARNING [io.micrometer.registry.otlp.OtlpMeterRegistry] (MSC service thread 1-5) Failed to publish metrics to OTLP receiver: java.net.ConnectException: Connection refused
通过遵循这些步骤,您可以使用管理 CLI 将 Micrometer 子系统添加到 JBoss EAP 服务器中,为应用启用增强的监控功能。
第 7 章 为 JBoss EAP 开发 Micrometer 应用程序 复制链接链接已复制到粘贴板!
7.1. 在 JBoss EAP 中集成 Micrometer 指标 复制链接链接已复制到粘贴板!
通过使用 Micrometer,您可以在 JBoss EAP 中监控和收集应用程序指标。Micrometer 支持提供了应用程序指标的暴露。导出过程基于 PUSH,确保指标发送到 OpenTelemetry Collector。
先决条件
- 您已安装了 JDK 17。
- 已安装 Maven 3.6 或更高版本。如需更多信息,请参阅 下载 Apache Maven。
- 已安装 Docker。如需更多信息,请参阅 获取 Docker。
- 可选: 在您的系统中安装了 podman。使用受支持的 RHEL 上可用的最新 podman 版本。如需更多信息,请参阅 Red Hat JBoss Enterprise Application Platform 8.0 支持的配置。
-
configure-micrometer.cli文件位于应用程序根目录中。
本节中的示例包括如何使用 configure-micrometer.cli 文件,它基于 Micrometer Quickstart。
流程
- 打开终端。
使用以下脚本将 JBoss EAP 启动为独立服务器:
<EAP_HOME>/bin/standalone.sh -c standalone-microprofile.xml
$ <EAP_HOME>/bin/standalone.sh -c standalone-microprofile.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 Windows 服务器,请使用 <
;EAP_HOME> \bin\standalone.bat脚本。- 打开一个新的终端。
- 导航到应用程序根目录。
运行以下命令来配置服务器:
<EAP_HOME>/bin/jboss-cli.sh --connect --file=configure-micrometer.cli
$ <EAP_HOME>/bin/jboss-cli.sh --connect --file=configure-micrometer.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 Windows 服务器,请使用 <
;EAP_HOME> \bin\jboss-cli.bat脚本。将 <EAP_HOME > 替换为服务器的路径。
预期输出:
The batch executed successfully process-state: reload-required
The batch executed successfully process-state: reload-requiredCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理命令重新载入服务器:
<EAP_HOME>/bin/jboss-cli.sh --connect --commands=reload
$ <EAP_HOME>/bin/jboss-cli.sh --connect --commands=reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建名为
docker-compose.yaml的配置文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建名为
otel-collector-config.yaml的配置文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令启动收集器服务器实例:
docker-compose up
$ docker-compose upCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以使用 Podman 而不是 Docker。如果您选择 Podman,则使用
$ podman-compose up命令而不是$ docker-compose。如果您的环境不支持 Docker 或 Podman,请参阅 Otel Collector 文档了解 安装和运行 OpenTelemetry Collector 的指南。在
RootResource类中,了解MeterRegistry如何注入您的类,以确保在注册量表前正确设置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
checkIfPrime ()方法正文,以了解如何在应用程序逻辑中使用注册的量表。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导航到应用程序根目录。
语法
cd <path_to_application_root>/<application_root>
$ cd <path_to_application_root>/<application_root>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,引用 Micrometer Quickstart:
cd ~/quickstarts/micrometer
$ cd ~/quickstarts/micrometerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令编译并部署应用程序:
mvn clean package wildfly:deploy
$ mvn clean package wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow
这会将 micrometer/target/micrometer.war 部署到正在运行的服务器。
验证
使用 Web 浏览器访问 应用,也可以运行以下命令:
curl http://localhost:8080/micrometer/prime/13
$ curl http://localhost:8080/micrometer/prime/13Copy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出:
13 is prime.
13 is prime.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 8 章 在 JBoss EAP XP 的 OpenShift 镜像上构建并运行微服务应用程序 复制链接链接已复制到粘贴板!
您可以在 OpenShift 镜像的 JBoss EAP XP 上构建并运行微服务应用程序。
JBoss EAP XP 仅支持 OpenShift 4 及更新的版本。
使用以下工作流,使用 source-to-image (S2I)进程为 JBoss EAP XP 构建并运行微服务应用。
默认的 cloud-default-mp-config 层提供独立配置文件,该文件基于 standalone-microprofile-ha.xml 文件。有关 JBoss EAP XP 中包含的服务器配置文件的更多信息,请参阅 单机服务器配置文件 部分。
此工作流使用 microprofile-config quickstart 作为示例。Quickstart 提供了一个小型特定工作示例,可用作您自己的项目的参考。如需更多信息,请参阅 JBoss EAP XP 5.0.0 附带的 microprofile-config Quickstart。
其他资源
- 有关 JBoss EAP XP 中包含的服务器配置文件的更多信息,请参阅 单机服务器配置文件。
8.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
8.2. 使用 S2I 构建和部署 JBoss EAP XP 应用镜像 复制链接链接已复制到粘贴板!
按照 Source-to-Image (S2I)工作流,为 JBoss EAP XP 应用构建可重复生成的容器镜像。这些生成的容器镜像包括应用部署和可直接运行 JBoss EAP XP 服务器。
S2I 工作流从 Git 存储库获取源代码,并将其注入到基于您要使用的语言和框架的容器中。在 S2I 工作流完成后,将编译 src 代码,应用将被打包并部署到 JBoss EAP XP 服务器。
先决条件
- 您有一个有效的红帽客户帐户。
- 您有一个 Registry Service Account。按照红帽客户门户网站中的说明,使用 registry 服务帐户 创建身份验证令牌。
- 您已下载了 OpenShift secret YAML 文件,您可以使用它来从红帽生态系统目录中拉取镜像。如需更多信息,请参阅 OpenShift Secret。
-
您可以使用
oc login命令登录 OpenShift。 - 您已安装 Helm。如需更多信息,请参阅安装 Helm。
您已在管理 CLI 中输入此命令安装了 JBoss EAP Helm chart 的存储库:
helm repo add jboss-eap https://jbossas.github.io/eap-charts/
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
使用以下 YAML 内容,创建名为
helm.yaml的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,在 Openshift 上部署 JBoss EAP XP 应用程序:
helm install microprofile-config -f helm.yaml jboss-eap/eap-xp5
$ helm install microprofile-config -f helm.yaml jboss-eap/eap-xp5Copy to Clipboard Copied! Toggle word wrap Toggle overflow
此流程与在 OpenShift 中使用 source-to-image 构建应用程序镜像 非常相似。有关该流程的更多信息,请参阅在 OpenShift Container Platform 中使用 JBoss EAP。
验证
使用
curl访问应用程序。curl https://$(oc get route microprofile-config --template='{{ .spec.host }}')/config/value$ curl https://$(oc get route microprofile-config --template='{{ .spec.host }}')/config/valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您将获得
MyPropertyFileConfigValue输出,确认该应用已经部署。
8.3. 完成 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/microprofile-config --port=8080
$ oc expose service/microprofile-config --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 5.0.0 GA 发布,Microprofile 配置快速启动不会回复对应用程序的根上下文的 HTTPS GET 请求。此功能增强仅适用于 {JBossXPShortName101} GA 发行版。
例如,若要与 Microprofile Config 应用交互,您的浏览器中 URL 可能是
http://HOST_PORT_Value/config/value。如果您的应用程序没有使用 JBoss EAP root 上下文,请将应用的上下文附加到 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 deployment/microprofile-config --replicas=3
$ oc scale deployment/microprofile-config --replicas=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
有关 JBoss EAP XP Quickstarts 的更多信息,请参阅 JBoss EAP 指南中的使用 MicroProfile 一节。https://access.redhat.com/documentation/zh-cn/red_hat_jboss_enterprise_application_platform/7.4/html/using_jboss_eap_xp_5.0.0/using-the-openshift-image-for-jboss-eap-xp_default#use-quickstarts_context
第 9 章 功能修剪 复制链接链接已复制到粘贴板!
在构建可引导 JAR 时,您可以决定要包含哪些 JBoss EAP 功能和子系统:
只有 OpenShift 或构建可引导 JAR 时,才支持修剪功能。
其他资源
9.1. 可用的 JBoss EAP 层 复制链接链接已复制到粘贴板!
红帽提供了多个层,可在 OpenShift 或可引导 JAR 中自定义 JBoss EAP 服务器的调配。
三个层是提供核心功能的基本层。其他层是 decorator 层,其增强了基本层的功能。
大多数 decorator 层可用于在 JBoss EAP 中为 OpenShift 构建 S2I 镜像,或构建可引导 JAR。几个层不支持 S2I 镜像;层的描述中指出这个限制。
仅支持列出的层。不支持此处列出的层。
9.1.1. 基本层 复制链接链接已复制到粘贴板!
每个基础层包括典型的服务器用户用例的核心功能。
datasources-web-server
此层包含一个 servlet 容器,以及配置数据源的功能。
此层不包括 MicroProfile 功能。
此层支持以下 Jakarta EE 规格:
- Jakarta JSON Processing 1.1
- Jakarta JSON Binding 1.0
- Jakarta Servlet 4.0
- Jakarta Expression Language 3.0
- Jakarta Server Pages 2.3
- Jakarta Standard Tag Library 1.2
- jakarta Concurrency 1.1
- Jakarta Annotations 1.3
- Jakarta XML Binding 2.3
- Jakarta Debugging Support for Other Languages 1.0
- Jakarta Transactions 1.3
- Jakarta Connectors 1.7
jaxrs-server
此层通过以下 JBoss EAP 子系统增强了 datasources-web-server 层:
-
jaxrs -
weld -
jpa
此层还在容器中本地添加了基于 Infinispan 的第二级实体缓存。
以下 MicroProfile 功能包含在此层中:
- MicroProfile REST 客户端
除了 datasources-web-server 层支持的那些层,还需要以下 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 Config
除了 jaxrs-server 层支持的外,该层还支持以下 Jakarta EE 规格:
- jakarta Security 1.0
cloud-default-mp-config
此层根据 standalone-microprofile-ha.xml 文件,使用独立配置来调配服务器。cloud-default-mp-layer 由 org.jboss.eap.xp:eap-xp-cloud-galleon-pack 提供,支持 JBoss EAP XP S2I 构建,但不适用于 Bootable JAR。有关 JBoss EAP XP 中包含的服务器配置文件的更多信息,请参阅 单机服务器配置文件 部分。
此工作流使用 microprofile-config quickstart 作为示例。Quickstart 提供了一个小型特定工作示例,可用作您自己的项目的参考。如需更多信息,请参阅 JBoss EAP XP 5.0.0 附带的 microprofile-config Quickstart。
ee-core-profile-server
ee-core-profile-server 层置备带有 Jakarta EE 10 核心配置文件的服务器。Core Profile 为提供核心 JBoss EAP 服务器功能和 Jakarta EE API 的用户提供了一个小型的轻量级配置文件。ee-core-profile-server 层最适合更小的运行时,如云原生应用程序和微服务。
9.1.2. decorator 层 复制链接链接已复制到粘贴板!
Decorator 层不会独立使用。您可以使用基本层配置一个或多个 decorator 层,以提供额外的功能。
ejb-lite
此 decorator 层向置备的服务器添加最小的 Jakarta Enterprise Beans 实施。这个层不包括以下支持:
- IIOP 集成
- MDB 实例池
- 远程连接器资源
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
Jakarta Enterprise Beans
此 decorator 层扩展 ejb-lite 层。除了 ejb-lite 层中包含的基本功能外,此层还对置备的服务器添加以下支持:
- MDB 实例池
- 远程连接器资源
如果要使用消息驱动的 Bean (MDB)或 Jakarta Enterprise Beans 远程功能,则使用这个层。如果不需要这些功能,请使用 ejb-lite 层。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
ejb-local-cache
此 decorator 层将 Jakarta Enterprise Beans 的本地缓存支持添加到置备的服务器。
依赖项 :只有当您包含 ejb-lite 层或 ejb 层时,才能包含此层。
此层与 ejb-dist-cache 层不兼容。如果包含 ejb-dist-cache 层,则无法包含 ejb-local-cache 层。如果您同时包含两个层,则生成的构建可能会包含意外的 Jakarta Enterprise Beans 配置。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
ejb-dist-cache
此 decorator 层将 Jakarta Enterprise Beans 的分布式缓存支持添加到置备的服务器。
依赖项 :只有当您包含 ejb-lite 层或 ejb 层时,才能包含此层。
此层与 ejb-local-cache 层不兼容。如果包含 ejb-dist-cache 层,则无法包含 ejb-local-cache 层。如果您同时包含两个层,则生成的构建可能会导致意外配置。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
jdr
此 decorator 层添加 JBoss 诊断报告(jdr)子系统,以便在从红帽请求支持时收集诊断数据。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
jakarta Persistence
此 decorator 层为单节点服务器添加持久性功能。请注意,只有在服务器能够组成集群时,分布式缓存才可以正常工作。
该层将 Hibernate 库添加到置备的服务器,并具有以下支持:
-
jpa子系统的配置 -
infinispan子系统的配置 - 本地 Hibernate 缓存容器
此层与 jpa-distributed 层不兼容。如果包含 jpa 层,则无法包含 jpa-distributed 层。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
jpa-distributed
这个 decorator 层为集群中运行的服务器添加持久性功能。该层将 Hibernate 库添加到置备的服务器,并具有以下支持:
-
jpa子系统的配置 -
infinispan子系统的配置 - 本地 Hibernate 缓存容器
- Invalidation 和 replication Hibernate 缓存容器
-
配置
jgroups子系统
此层与 jpa 层不兼容。如果包含 jpa 层,则无法包含 jpa-distributed 层。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
jakarta Server Faces
此 decorator 层将 jsf 子系统添加到调配的服务器。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
microprofile-platform
此 decorator 层向置备的服务器添加以下 MicroProfile 功能:
- MicroProfile Config
- MicroProfile Fault Tolerance
- MicroProfile Health
- MicroProfile JWT
- MicroProfile OpenAPI
此层包括 可观察 层中包含的 MicroProfile 功能。如果包含这个层,则不需要包含 可观察 层。
Observability(可观察性)
这个 decorator 层在置备的服务器中添加了以下可观察性功能:
- MicroProfile Health
- MicroProfile Config
此层内置于 cloud-server 层。您不需要将此层添加到 cloud-server 层。
remote-activemq
此 decorator 层添加了与远程 ActiveMQ 代理通信到调配的服务器的功能,集成消息传递支持。
池的连接工厂配置将 guest 指定为 。您可以使用 CLI 脚本在运行时更改这些值。
用户和密码 属性的值
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
sso
这种 decorator 层将 Red Hat Single Sign-On 集成到置备的服务器。
只有在使用 S2I 调配服务器时,才应使用此层。
web-console
这个 decorator 层将管理控制台添加到置备的服务器。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
web-clustering
此 decorator 层通过为适合集群环境的数据会话处理配置基于本地 Infinispan 的容器 Web 缓存来添加对可分布式 Web 应用的支持。
web-passivation
此 decorator 层通过为适合单一节点环境的数据会话配置本地基于 Infinispan 的容器 Web 缓存来添加对可分布式 Web 应用程序的支持。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
webservices
此层为调配的服务器添加 Web 服务功能,支持 Jakarta Web 服务部署。
只有在构建可引导 JAR 时,才支持此层。使用 S2I 时不支持这个层。
其他资源
第 10 章 使用 JBoss 工具为 JBoss EAP 启用 MicroProfile 应用程序开发 复制链接链接已复制到粘贴板!
如果要在您使用 JBoss 工具开发的应用程序中纳入 MicroProfile 功能,您必须在 JBoss 工具中启用对 JBoss EAP 的 MicroProfile 支持。
JBoss EAP 扩展包提供对 MicroProfile 的支持。
JBoss EAP 7.2 及更早版本不支持 JBoss EAP expansion pack。
JBoss EAP 扩展包的每个版本都支持 JBoss EAP 的特定补丁。详情请查看 JBoss EAP 扩展软件包支持和生命周期政策页。
用于 Openshift 的 JBoss EAP XP Quickstarts 仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。
10.1. 配置 JBoss 工具以使用 MicroProfile 功能 复制链接链接已复制到粘贴板!
要在 JBoss EAP 上启用 MicroProfile 支持,请为 JBoss EAP XP 注册一个新的运行时服务器,然后创建新的 JBoss EAP 8.0 服务器。
为服务器指定适当的名称,可帮助您识别它支持 MicroProfile 功能。
此服务器使用新创建的 JBoss EAP XP 运行时,该运行时指向之前安装的运行时,并使用 standalone-microprofile.xml 配置文件。
如果您在 JBoss 工具中将 Target 运行时 设置为 8.0 或更新的运行时版本,则您的项目与 Jakarta EE 8 规格兼容。
流程
在
新建服务器对话框中设置新的服务器。- 在 Select server type 列表中,选择 Red Hat JBoss Enterprise Application Platform 8.0。
- 在 Server 的主机名 字段中,输入 localhost。
- 在 Server name 字段中,输入 JBoss EAP 8.0 XP。
- 点击 Next。
配置新的服务器。
- 在 Home directory 字段中,如果您不想使用默认设置,请指定一个新目录;例如: home/myname/dev/microprofile/runtimes/jboss-eap-7.4。
- 确保 执行环境 设置为 JavaSE-1.8。
- 可选:更改 Server 基础目录 和配置文件字段中的值。
- 点 Finish。
结果
现在,您已准备好开始使用 MicroProfile 功能开发应用程序,或开始使用 JBoss EAP 的 MicroProfile 快速入门。
10.2. 使用 MicroProfile 快速入门进行 JBoss 工具 复制链接链接已复制到粘贴板!
启用 MicroProfile 快速入门可简化在已安装的服务器上运行和测试的简单示例。
这些示例演示了以下 MicroProfile 功能。
- MicroProfile Config
- MicroProfile Fault Tolerance
- MicroProfile Health
- MicroProfile JWT
- MicroProfile OpenAPI
- MicroProfile REST 客户端
流程
-
从 Quickstart Parent Artifact 导入
pom.xml文件。 如果您使用需要环境变量的快速入门,请在服务器 Overview 对话框中在启动配置上配置这些变量。
例如,
opentelemetry-tracingquickstart 使用以下环境变量:-
OTEL_COLLECTOR_HOST
-
其他资源
关于 JBoss Enterprise Application Platform expansion pack
Red Hat JBoss Enterprise Application Platform expansion pack 支持和生命周期政策
第 11 章 可引导 JAR 复制链接链接已复制到粘贴板!
您可以使用 JBoss EAP JAR Maven 插件构建和打包微服务应用,作为可引导 JAR。然后,您可以在 JBoss EAP 裸机平台或 JBoss EAP OpenShift 平台上运行应用程序。
11.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-only 模式重启,这是启动与服务器管理相关的服务的模式。
- 如果您关闭服务器,则应用到服务器的更新将会丢失。
另外,您还可以置备 hollow bootable JAR。此 JAR 仅包含服务器,以便您可以重复使用服务器来运行不同的应用。
11.2. JBoss EAP JAR Maven 插件 复制链接链接已复制到粘贴板!
您可以使用 JBoss EAP JAR Maven 插件将应用程序构建为可引导 JAR。
检查您具有最新的 Maven 插件,如 9. minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本为 微型 版本,X 是 Red Hat 构建号。例如: 9.0.1.Final-redhat-00009。
在 Maven 项目中,src 目录包含构建应用程序所需的所有源文件。在 JBoss EAP JAR Maven 插件构建可引导 JAR 后,生成的 JAR 位于 target/<application>-bootable.jar 中。
JBoss EAP JAR Maven 插件还提供以下功能:
- 允许您使用 JBoss EAP 频道调配 JBoss EAP XP 服务器。
- 将 CLI 脚本命令应用到服务器。
-
使用
org.jboss.eap.xp:wildfly-galleon-packGalleon 功能软件包及其一些层来自定义服务器配置文件。 - 支持将额外文件添加到打包的可引导 JAR 中,如密钥存储文件。
- 包含创建 hollow bootable JAR 的功能,即不包含应用的可引导 JAR 的功能。
使用 JBoss EAP JAR Maven 插件创建可引导 JAR 后,您可以通过发出以下命令来启动应用:将 target/myapp-bootable.jar 替换为可引导 JAR 的路径。例如:
java -jar target/myapp-bootable.jar
$ java -jar target/myapp-bootable.jar
要获得受支持的 bootable JAR 启动命令列表,请在启动命令的末尾附加 - help。例如,java -jar target/myapp-bootable.jar --help。
11.3. 可引导 JAR 参数 复制链接链接已复制到粘贴板!
查看下表中的参数,以了解用于可引导 JAR 的支持参数。
| 参数 | 描述 |
|---|---|
|
| 显示指定命令的帮助信息并退出。 |
|
| 指定启动可引导 JAR 时执行的 JBoss CLI 脚本的路径。如果指定的路径相对,则路径会根据用于启动可引导 JAR 的 Java 虚拟机实例的工作目录解析。 |
|
| 特定于 hollow bootable JAR 的参数。指定包含您要部署到服务器上的应用程序的 WAR、JAR、EAR 文件或展开目录的路径。 |
|
| 输出生成的 Galleon 配置文件的内容。 |
|
|
默认情况下,JVM 设置用于在启动可引导 JAR 后创建 TEMP 目录。您可以使用 |
|
| 运行安装有安全管理器的服务器。 |
|
|
将系统属性 |
|
|
设置系统属性 |
|
| 指定服务器运行时设置的系统属性。可引导 JAR JVM 不会设置这些系统属性。 |
|
| 从指定的 URL 加载系统属性。 |
|
| 设置安全属性。 |
|
|
设置系统属性 |
|
| 显示应用服务器版本并退出。 |
11.4. 为可引导 JAR 服务器指定 Galleon 层 复制链接链接已复制到粘贴板!
您可以指定 Galleon 层来为服务器构建自定义配置。另外,您可以指定您要从服务器中排除的 Galleon 层。
从 JBoss EAP XP 5.0 开始,需要使用 JBoss EAP 8.0 和 JBoss EAP XP 5.0 频道配置 JBoss EAP JAR Maven 插件来检索服务器工件。有关 JBoss EAP 频道的更多信息,请参阅管理 JBoss EAP 安装频道。
要指定 JBoss EAP 和 JBoss EAP XP 频道以置备最新的 JBoss EAP XP 5.0 服务器,请按照以下示例操作:
使用 & lt;feature-pack-location& gt; 元素来指定功能软件包位置。在 Maven 插件配置文件中,以下示例在 < feature-pack-location> 元素中指定 。
org.jboss.eap.xp:wildfly-galleon-pack
如果您需要引用多个功能包,请在 < feature-packs> 元素中 列出它们。以下示例显示了在 < feature-packs > 元素中添加 JBoss EAP datasources 功能 pack:
您可以组合来自多个功能软件包的 Galleon 层,将可引导 JAR 服务器配置为只包含提供您需要的功能的 Galleon 层。
在裸机平台上,如果您在配置文件中没有指定 Galleon 层,则调配的服务器包含一个与默认 standalone-microprofile.xml 配置相同的配置。
在 OpenShift 平台上,在插件配置中添加了 & lt;cloud /> 配置元素后,您选择不要在配置文件中指定 Galleon 层,置备的服务器包含针对云环境调整的配置,类似于默认的 standalone-microprofile-ha.xml。
先决条件
- 已安装 Maven。
-
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。
流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。
您必须在项目中设置这些属性。例如:
<properties>
<bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
<properties>
<bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
流程
- 确定支持的 JBoss EAP Galleon 层,提供运行应用程序所需的功能。
在 Maven 项目
pom.xml文件的 <plugin> 元素中引用 JBoss EAP feature pack 位置。以下示例显示了包含单一功能包的单个功能包,其中包括jaxrs-server基础层和jpa-distributed层。jaxrs-server基础层为服务器提供额外的支持。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例还显示来自项目的
jpa层的排除。注意如果您在项目中包含
jpa-distributed层,则必须从jaxrs-server层中排除jpa层。jpa层配置本地 infinispan hibernate 缓存,而jpa-distributed层配置远程 infinispan hibernate 缓存。
11.5. 在 JBoss EAP 裸机平台上使用可引导 JAR 复制链接链接已复制到粘贴板!
您可以将应用打包为 JBoss EAP 裸机平台上的可引导 JAR。
可引导 JAR 包含服务器、打包的应用程序以及启动服务器所需的运行时。
此流程演示了使用 JBoss EAP JAR Maven 插件将 MicroProfile Config 微服务应用打包为可引导 JAR。请参阅 MicroProfile 配置快速入门。
您可以使用 CLI 脚本在可引导 JAR 打包期间配置服务器。
在构建必须打包在可引导 JAR 中的 web 应用程序时,您必须在 pom.xml 文件的 & lt;packaging > 项中指定 war。例如:
<packaging>war</packaging>
<packaging>war</packaging>
此值需要将构建应用打包为 WAR 文件,而不是作为默认的 JAR 文件。
在仅构建 hollow bootable JAR 的 Maven 项目中,将打包值设置为 pom。例如:
<packaging>pom</packaging>
<packaging>pom</packaging>
当您为 Maven 项目构建 hollow bootable JAR 时,您不限于使用 pom 打包。您可以通过在 < hollow-jar > 项中为任何类型的打包指定 true 来创建 true,如 war。请参阅在 JBoss EAP 裸机平台上创建休眠 JAR。
先决条件
-
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。 - 您已创建了 Maven 项目,并添加用于创建 MicroProfile 应用的依赖项。请参阅 MicroProfile 配置开发。
流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。
您必须在项目中设置这些属性。例如:
<properties>
<bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
<properties>
<bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
流程
在
pom.xml文件的<build> 元素中添加以下内容。例如: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 参数的列表,请将
--help附加到java -jar target/microprofile-config-bootable.jar命令的末尾。在 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
11.6. 在 JBoss EAP 裸机平台上创建 hollow bootable JAR 复制链接链接已复制到粘贴板!
您可以在 JBoss EAP 裸机平台上将应用程序打包为 hollow bootable JAR。
hollow bootable JAR 仅包含 JBoss EAP 服务器。hollow bootable JAR 由 JBoss EAP JAR Maven 插件打包。该应用在服务器运行时提供。如果您需要为不同的应用重新使用服务器配置,则 hollow bootable JAR 非常有用。
先决条件
- 您已为 MicroProfile 配置开发创建了 Maven 项目。例如:请参阅 MicroProfile 配置快速入门。
-
您已完成了在 JBoss EAP 裸机平台上使用可引导 JAR 中概述的
pom.xml文件配置步骤。 -
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。
流程
-
要构建 hollow bootable JAR,您必须在项目
pom.xml文件中将 <hollow-jar> 插件配置元素设置为 true。例如:
通过在 < hollow-jar& gt; 元素中指定 true,JBoss EAP JAR Maven 插件不会将应用包含在 JAR 中。
构建 hollow bootable JAR:
mvn clean package
$ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 hollow bootable 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 应用注册到根目录,请将应用命名为
ROOT.war。
11.7. 构建时执行的 CLI 脚本 复制链接链接已复制到粘贴板!
您可以创建 CLI 脚本,以在可引导 JAR 打包期间配置服务器。
CLI 脚本是一个文本文件,其中包含可用于应用其他服务器配置的 CLI 命令序列。例如,您可以创建一个脚本来添加新的日志记录器到 logging 子系统。
您还可以在 CLI 脚本中指定更复杂的操作。例如,您可以将安全管理操作分组到单个命令中,以便为管理 HTTP 端点启用 HTTP 身份验证。
在将应用程序打包为可引导 JAR 之前,您必须在插件 配置的 <cli-session > 元素中定义 CLI 脚本。这样可确保服务器配置设置在打包可引导 JAR 后保留。
虽然您可以组合预定义的 Galleon 层来配置部署应用程序的服务器,但存在限制。例如,在打包可引导 JAR 时,您无法使用 Galleon 层启用 HTTPS undertow 侦听器。反之,您必须使用 CLI 脚本。
您必须在 pom.xml 文件的 < ;cli-session& gt; 元素中定义 CLI 脚本。下表显示了 CLI 会话属性的类型:
| 参数 | 描述 |
|---|---|
|
| 脚本文件的路径列表。 |
|
|
可选属性,用于指定属性文件的路径。此文件列出了脚本可以使用 |
|
|
包含布尔值的可选属性。指明在向服务器发送操作请求前是否解析系统属性或表达式。默认值为 |
-
CLI 脚本会按照
pom.xml文件的 <cli-session> 元素定义的顺序启动。 - JBoss EAP JAR Maven 插件为每个 CLI 会话启动嵌入式服务器。因此,您的 CLI 脚本不必启动或停止嵌入式服务器。
11.8. 在运行时执行 CLI 脚本 复制链接链接已复制到粘贴板!
您可以在运行时对服务器配置应用更改;这为您提供了针对执行上下文调整服务器的灵活性。但是,对服务器应用更改的首选方法是在构建期间应用。
流程
启动可引导 JAR 和
--cli-script参数。例如:
java -jar myapp-bootable.jar --cli-scipt=my-scli-scipt.cli
java -jar myapp-bootable.jar --cli-scipt=my-scli-scipt.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
CLI 脚本必须是文本文件(UTF-8),如果存在,则文件扩展是无意义的,但建议
.cli扩展。 - 需要服务器重启的操作将终止您的可引导 JAR 实例。
-
连接、重新加载、关闭以及与嵌入式服务器相关的所有命令都不正常运行。 -
不支持在 admin-mode 中无法执行的 CLI 命令,如
jdbc-driver-info。
如果您在不执行 CLI 脚本的情况下重新启动服务器,您的新服务器实例将不包含来自上一服务器实例的更改。
11.9. 在 JBoss EAP OpenShift 平台上使用可引导 JAR 复制链接链接已复制到粘贴板!
11.9.1. 使用 oc 命令进行二进制构建 复制链接链接已复制到粘贴板!
将应用打包为可引导 JAR 后,您可以在 JBoss EAP OpenShift 平台上运行应用。
在 OpenShift 上,您无法将 EAP Operator 自动事务恢复功能与可引导 JAR 搭配使用。
先决条件
- 您已为 MicroProfile 配置开发创建了 Maven 项目。例如:请参阅 MicroProfile 配置快速入门。
-
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。
流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。
您必须在项目中设置这些属性。例如:
<properties>
<bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
<properties>
<bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
流程
在
pom.xml文件的<build> 元素中添加以下内容。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须在插件配置的
</> 元素,因此 JBoss EAP Maven JAR 插件可以识别您选择的 OpenShift 平台。configuration>元素中包含 <cloud打包应用程序:
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
11.10. 为 OpenShift 配置可引导 JAR 复制链接链接已复制到粘贴板!
在使用可引导 JAR 之前,您可以配置 JVM 设置,以确保单机服务器在 JBoss EAP for OpenShift 上正确运行。
使用 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 17 镜像。要运行与可引导 JAR 关联的应用,您必须首先将最新的 OpenJDK 17 镜像流标签和镜像信息导入到 OpenShift 项目中。然后,您可以使用环境变量在导入的镜像中配置 JVM。
您可以应用相同的配置选项来配置用于 JBoss EAP for OpenShift S2I 镜像的 JVM,但有以下区别:
-
可选:
-Xlog功能不可用,但您可以通过启用-Xlog:gc来设置垃圾回收日志记录。例如:JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time"。 -
要增加初始元空间大小,您可以设置
GC_METASPACE_SIZE环境变量。为获得最佳元数据容量性能,请将值设为96。 -
要更好地生成随机文件,请使用
JAVA_OPTS_APPEND环境变量将java.security.egd属性设置为-Djava.security.egd=file:/dev/urandom。
这些配置提高了在导入的 OpenJDK 17 镜像上运行的 JVM 的内存设置和垃圾回收功能。
11.11. 在 OpenShift 上使用应用程序中的 ConfigMap 复制链接链接已复制到粘贴板!
对于 OpenShift,您可以使用部署控制器(dc)将 configmap 挂载到用于运行应用的 pod 中。
ConfigMap 是一个 OpenShift 资源,用于将非机密数据存储在键值对中。
在指定 microprofile-platform Galleon 层来添加 microprofile-config-smallrye 子系统以及服务器配置文件的任何扩展后,您可以使用 CLI 脚本向服务器配置添加新的 ConfigSource。您可以将 CLI 脚本保存在可访问的目录中,如 /scripts 目录,位于 Maven 项目的根目录中。
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 mp-config.cliCLI 脚本会创建一个新的ConfigSource,该脚本将从属性文件检索到的 ordinal 和 path 值。-
将脚本保存到
/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
11.12. 创建可引导 JAR Maven 项目 复制链接链接已复制到粘贴板!
按照以下步骤创建示例 Maven 项目。您必须先创建一个 Maven 项目,然后才能执行以下步骤:
- 为您的可引导 JAR 启用 JSON 日志记录
- 为多个可引导 JAR 实例启用 Web 会话数据存储
- 使用 CLI 脚本为可引导 JAR 启用 HTTP 身份验证
- 使用红帽构建的 Keycloak 保护 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-eeBOM 中的 Jakarta EE 工件的版本,请将 BOM 添加到项目pom.xml文件的 <dependencyManagement> 部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将由 BOM 管理的 servlet API 工件添加到项目
pom.xml文件的 <dependency> 部分,如下例所示:<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <scope>provided</scope> </dependency><dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <scope>provided</scope> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.13. 为您的可引导 JAR 启用 JSON 日志记录 复制链接链接已复制到粘贴板!
您可以使用 CLI 脚本配置服务器日志记录配置,为可引导 JAR 启用 JSON 日志记录。启用 JSON 日志记录时,您可以使用 JSON 格式查看日志消息。
此流程中的示例演示了如何在裸机平台和 OpenShift 平台上为可引导 JAR 启用 JSON 日志记录。
先决条件
-
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。 您已创建了 Maven 项目,并添加用于创建应用程序的依赖项。请参阅 创建可引导 JAR Maven 项目。
重要在 Maven 项目的 Maven archetype 中,您必须指定特定于项目的 groupID 和 artifactID。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties><properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
流程
将 JBoss Logging 和 Jakarta RESTful Web Services 依赖项(由 BOM 管理)添加到项目
pom.xml文件的<dependencies> 部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
pom.xml文件的<build> 元素中添加以下内容。例如: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 来访问应用程序: http://127.0.0.1:8080/hello。
预期的输出:您可以在应用程序控制台中查看 JSON 格式的日志,包括
com.example.logging.HelloWorldEndpointdebug trace。
可选 : 要在 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 访问应用程序的正在运行的 pod 日志。其中
APP_POD_NAME是正在运行的 Pod 日志记录应用的名称。oc logs APP_POD_NAME
$ oc logs APP_POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期的结果:pod 日志采用 JSON 格式,并包含
com.example.logging.HelloWorldEndpointdebug trace。
11.14. 为多个可引导 JAR 实例启用 Web 会话数据存储 复制链接链接已复制到粘贴板!
您可以将 web-clustering 应用程序构建并打包为可引导 JAR。
先决条件
-
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。 您已创建了 Maven 项目,并添加用于创建 web-clustering 应用程序的依赖项。请参阅 创建可引导 JAR Maven 项目。
重要在设置 Maven 项目时,您必须在 Maven archetype 配置中指定值。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties><properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
流程
在
pom.xml文件的<build> 元素中添加以下内容。例如: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 &
lt;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 实例中的应用程序: http://127.0.0.1:8080/clustering。记录用户会话 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 应用,必须为 Pod 在其中运行的服务帐户授予授权访问权限。然后,服务帐户可以访问 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;否则,服务器会尝试从default命名空间检索 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 生成的创建时间与终止的 pod 的创建时间匹配。这表示启用了 Web 会话数据存储。
11.15. 使用 CLI 脚本为可引导 JAR 启用 HTTP 身份验证 复制链接链接已复制到粘贴板!
您可以使用 CLI 脚本为可引导 JAR 启用 HTTP 身份验证。此脚本会在您的服务器中添加安全域和一个安全域。
先决条件
-
您已检查了最新的 Maven 插件版本,如
9.minor.micro.Final-redhat-XXXXX,其中 9 是主版本,次版本 为 微型 版本,X 是 Red Hat 构建号。例如:9.0.1.Final-redhat-00009。 您已创建了 Maven 项目,并添加用于创建需要 HTTP 身份验证的应用程序的依赖项。请参阅 创建可引导 JAR Maven 项目。
重要在设置 Maven 项目时,您必须在 Maven archetype 配置中指定 HTTP 身份验证值。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties><properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
流程
在
pom.xml文件的<build> 元素中添加以下内容。例如: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安全域配置为为您的服务器定义的安全域。注意您可以选择在运行时执行 CLI 脚本,而不是打包时间。为此,请跳过这一步,然后继续下一步 10。
在 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配置文件的目录。此目录存储文件,如
bootable-users.properties和bootable-groups.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 如果您选择了跳过第 6 步,且在构建期间没有执行 CLI 脚本,使用以下命令启动应用程序:
mvn wildfly-jar:run -Dwildfly.bootable.arguments=--cli-script=scripts/authentication.cli
mvn wildfly-jar:run -Dwildfly.bootable.arguments=--cli-script=scripts/authentication.cliCopy 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
第 12 章 Helm Chart 用例 复制链接链接已复制到粘贴板!
Helm 是一个开源软件包管理器,允许您在 OpenShift 上构建、部署和维护您的 JBoss EAP XP 5.0 应用程序。
您可以将 Helm Chart 与 JBoss EAP XP 5.0 搭配使用:
- 使用 OpenShift Source-to-Image (S2I),从托管在 Git 存储库上的 Maven 项目构建应用程序。
- 使用 OpenShift 集群(TLS 配置、用于公开应用的公共路由等)在 OpenShift 上部署应用镜像。
- 使用 Helm Chart 构建应用程序镜像,并使用 JBoss EAP XP operator 来部署镜像。
- 使用其他方法为 JBoss EAP XP 构建应用程序镜像,并使用 Helm Chart。
- 您可以使用 JBoss EAP XP 5.0 构建 Java 应用程序,以创建 Bootable Jar 或 Jakarta 部署(与 JBoss EAP 8.0 类似)。
-
如果您的 Java 应用程序是 Bootable Jar,可以使用 JBoss EAP XP 5.0 的 Helm Chart 来构建应用程序镜像(使用其默认
build.mode设置为bootable-jar)。 -
如果您的 Java 应用程序是 Jakarta 部署,您可以通过将 Helm Chart 的
build.mode设置为s2i来使用 Source-to-Image (类似 JBoss EAP 8.0)来构建应用程序镜像
12.1. 使用 Helm Chart 构建和部署 JBoss EAP XP 应用程序 复制链接链接已复制到粘贴板!
您可以通过配置构建和部署值来使用 Helm Chart 构建 JBoss EAP XP 应用程序。您必须提供 Git 存储库的 URL,该 URL 在构建配置中托管应用程序代码,输出是包含构建的应用程序镜像的 ImageStreamTag 资源。要部署应用程序,您必须提供包含您构建的应用程序镜像的 ImageStreamTag 资源。输出是您部署的应用程序和其他相关资源,可用于从 OpenShift 内部和外部访问您的应用。
先决条件
- 您可以访问 OpenShift Development 控制台。
- 您有托管在 Git 存储库中的 JBoss EAP XP 应用的源代码。
- 您的应用程序是一个 Maven 项目。
-
您已将应用配置为使用
org.jboss.eap.plugins:eap-maven-plugin来调配您的 JBoss EAP XP 5.0 服务器。
- 此流程仅关注使用 OpenShift 开发控制台。
- 一些表单部分默认是折叠的。点击 > 来展开并查看其内容。另外,您不需要更新这些部分才能继续。
流程
登录 OpenShift 开发控制台。
- 在下拉菜单中点击 Helm。
- 在右上角点击 create,然后点 Helm Release。
- 选择 JBoss EAP XP 5。
- 点 create 并选择 configure via YAML view。
从源存储库构建应用程序镜像:
build: uri: <git repository URL of your application> mode: s2i
build: uri: <git repository URL of your application> mode: s2iCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:使用
sourceSecret键在build部分输入 secret:build: uri: <git repository URL of your application> mode: s2i sourceSecret: <name of secret login to your Git repository>
build: uri: <git repository URL of your application> mode: s2i sourceSecret: <name of secret login to your Git repository>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 如果您的应用程序已被成功部署,您应该在 OpenShift Development 控制台中看到 Helm 发行版本旁的部署徽标。
使用应用程序 pom.xml 中的 eap-maven-plugin 来调配您的 JBoss EAP 服务器。确保此插件在 OpenShift 配置集、默认配置集或任何其他活跃配置集中配置,OpenShift 配置集优先于所有其他活跃的配置集。
您必须将 build.mode 设置为 S2I。这是因为 JBoss EAP XP Helm Chart 的默认值为 bootable-jar。
build.s2i.featurePacks,build.s2i.galleonLayers 和 build.s2i.channels 字段已弃用。
12.1.2. 在 JBoss EAP XP 上使用带有 Bootable JAR 的 Helm Chart 复制链接链接已复制到粘贴板!
在 JBoss EAP XP 5.0 中,您可以将应用构建为 Bootable JAR,以了解有关如何执行此操作的更多信息,请参阅 可引导 JAR。
另外,在 JBoss EAP XP 5.0 中,您可以为 JBoss EAP XP 5.0 配置 Helms Chart,以基于 Bootable JAR 构建应用程序。
先决条件
- 您已登录到 OpenShift Development 控制台。
- 您有托管在 Git 存储库中的 JBoss EAP XP 应用的源代码。
-
您的应用程序是一个 Maven 项目。您已将应用程序配置为使用 Maven 插件
org.wildfly.plugins:wildfly-jar-maven-plugin创建可引导 JAR。如需更多信息,请参阅 创建可引导 JAR Maven 项目。
12.1.2.1. 使用 Bootable JAR 构建应用程序镜像 复制链接链接已复制到粘贴板!
您可以通过在 OpenShift 开发控制台中配置 build 部分,使用 Helms Chart 构建 JBoss EAP XP 应用程序镜像。
-
如果使用 Helm Chart 构建应用程序,则必须使用引用 Git 仓库的 Git URL 指定
build.url字段。 -
您必须将
build.mode字段设置为bootable-jar。
OpenShift 卷可让容器存储和共享来自不同来源的数据,包括云存储、网络文件系统(NFS)或主机机器。您可以使用 Helm Chart (OpenShift 软件包管理器)以一致、可重复的方式部署应用程序。通过将卷挂载添加到 Helm Chart 中,您可以使应用程序能够在部署之间持久保留数据。
12.2.1. 在 JBoss EAP XP 上使用 Helm Chart 挂载卷 复制链接链接已复制到粘贴板!
此流程解释了如何在 JBoss EAP XP 上使用 Helm Chart 将 secret 挂载为卷。另外,您还可以使用它来挂载 ConfigMap。此操作可让应用程序安全地访问和使用数据,防止它被未授权访问或篡改。例如,通过将 secret 挂载为卷,您存储在机密中的敏感数据将显示为一个文件,在运行已挂载机密的 POD 中。
先决条件
- 您可以访问 OpenShift Development 控制台
-
您已创建了一个
secret。例如,您已创建了名为eap-app-secret的机密,该机密引用keystore.jks等文件。 -
您已找出在容器文件系统中挂载 secret 的位置。例如,目录
/etc/jgroups-encrypt-secre-secret-volume是挂载 secret 文件的目录,如keystore.jks。 - 托管 Git 存储库中的 JBoss EAP XP 应用的源代码。
- 您的应用程序是一个 Maven 项目。
-
您已将应用配置为使用
org.jboss.eap.plugins:eap-maven-plugin来调配您的 JBoss EAP XP 5.0 服务器。
流程
登录 OpenShift 开发控制台。
- 在下拉菜单中点击 Helm。
- 在右上角点击 create,然后点 Helm Release。
- 选择 JBoss EAP XP 5。
- 点 create 并选择 configure via YAML view。
编辑
deploy.volumes字段中指定卷的 YAML 文件,并配置要使用的 secret。您必须提供卷名称和 secret 的 secretName 的名称:volumes: - name: eap-jgroups-keystore-volume secret: secretName: eap-app-secretvolumes: - name: eap-jgroups-keystore-volume secret: secretName: eap-app-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署配置中的
deploy.volumeMounts将卷挂载到文件系统中:volumeMounts: - name: eap-jgroups-keystore-volume mountPath: /etc/jgroups-encrypt-secret-volume readOnly: truevolumeMounts: - name: eap-jgroups-keystore-volume mountPath: /etc/jgroups-encrypt-secret-volume readOnly: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当 pod 启动时,容器将 keystore.jks 文件挂载到
/etc/jgroups-encrypt-secret-volume/keystore.jks位置。
第 13 章 JBoss EAP 中的可观察性 复制链接链接已复制到粘贴板!
如果您是开发人员或系统管理员,则 可观察性 是一种一系列实践和技术,您可以根据应用中的某些信号、应用中的问题位置和来源来确定。最常见的信号是指标、事件和追踪。JBoss EAP 使用 OpenTelemetry 进行 可观察性。
13.1. JBoss EAP 中的 OpenTelemetry 复制链接链接已复制到粘贴板!
OpenTelemetry 是一组工具、应用程序编程接口(API)和软件开发套件(SDK),可用于为应用程序检测、生成、收集和导出遥测数据。遥测数据包括指标数据、日志和追踪。分析应用程序的遥测数据可帮助您提高应用程序的性能。JBoss EAP 通过 opentelemetry 子系统提供 OpenTelemetry 功能。
Red Hat JBoss Enterprise Application Platform 8.0 仅提供 OpenTelemetry 追踪功能。
OpenTelemetry 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview 。
13.2. JBoss EAP 中的 OpenTelemetry 配置 复制链接链接已复制到粘贴板!
您可以使用 opentelemetry 子系统在 JBoss EAP 中配置 OpenTelemetry 的许多方面。这包括 exporter、span 处理器和 sampler。
- exporter
- 要分析和视觉化追踪,您可以将它们导出到收集器,如 OpenTelemetry Collector (OTLP)。您可以将 JBoss EAP 配置为使用支持 OpenTelemetry 协议的任何收集器。
- span 处理器
- 您可以将 span 处理器配置为导出范围,因为它们是生成或批量的。您还可以将 trace 数量配置为导出。
- sampler
- 您可以通过配置 sampler 将 trace 数量配置为记录。
配置示例
以下 XML 是完整的 OpenTelemetry 配置的示例,包括默认值。进行更改时,JBoss EAP 不会保留默认值,因此您的配置可能会不同。
您不能使用 OpenShift 路由对象与 OpenTelemetry Collector 端点连接。反之,使用 http:// <ip_address> : & lt;port> 或 http:// <service_name> : <port>。
13.3. JBoss EAP 中的 OpenTelemetry tracing 复制链接链接已复制到粘贴板!
JBoss EAP 提供 OpenTelemetry 跟踪,可帮助您在用户请求通过应用程序的不同部分时跟踪用户请求的进度。通过分析 trace,您可以提高应用程序的性能并调试可用性问题。
OpenTelemetry 追踪由以下组件组成:
- Trace
- 请求在应用程序中处理的操作集合。
- Span
- trace 中的单个操作。它提供请求、错误和持续时间(RED)指标,并包含 span 上下文。
- span 上下文
- 代表包含 span 的一个请求的一组唯一标识符。
JBoss EAP 自动跟踪对 Jakarta RESTful Web Services 应用程序的 REST 调用,以及容器管理的 Jakarta RESTful Web 服务客户端调用。JBoss EAP 会隐式跟踪 REST 调用,如下所示:
对于每个传入的请求:
- JBoss EAP 从请求中提取 span 上下文。
- JBoss EAP 启动一个新的范围,然后在请求完成后关闭它。
对于每个传出请求:
- JBoss EAP 将 span 上下文注入到请求中。
- JBoss EAP 启动一个新的范围,然后在请求完成后关闭它。
除了隐式追踪外,您还可以通过将 Tracer 实例注入应用程序来创建自定义 span,以进行精细的追踪。
13.4. 在 JBoss EAP 中启用 OpenTelemetry 追踪 复制链接链接已复制到粘贴板!
要在 JBoss EAP 中使用 OpenTelemetry tracing,您必须首先启用 opentelemetry 子系统。
先决条件
- 已安装带有 JBoss EAP XP 5.0 的 JBoss EAP 8.0。
流程
使用管理 CLI 添加 OpenTelemetry 扩展。
/extension=org.wildfly.extension.opentelemetry:add
/extension=org.wildfly.extension.opentelemetry:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用管理 CLI 启用
opentelemetry子系统。/subsystem=opentelemetry:add
/subsystem=opentelemetry:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载 JBoss EAP。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.5. 配置 opentelemetry 子系统 复制链接链接已复制到粘贴板!
您可以配置 opentelemetry 子系统来设置追踪的不同方面。根据您用来观察追踪的收集器配置它们。
先决条件
-
您已启用了
opentelemetry子系统。如需更多信息,请参阅 JBoss EAP 中启用 OpenTelemetry 跟踪。
流程
为 trace 设置导出器类型。
语法
/subsystem=opentelemetry:write-attribute(name=exporter-type, value=<exporter_type>)
/subsystem=opentelemetry:write-attribute(name=exporter-type, value=<exporter_type>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=opentelemetry:write-attribute(name=exporter-type, value=otlp)
/subsystem=opentelemetry:write-attribute(name=exporter-type, value=otlp)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置要导出 trace 的端点。
语法
/subsystem=opentelemetry:write-attribute(name=endpoint, value=<URL:port>)
/subsystem=opentelemetry:write-attribute(name=endpoint, value=<URL:port>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=opentelemetry:write-attribute(name=endpoint, value=http://localhost:4317)
/subsystem=opentelemetry:write-attribute(name=endpoint, value=http://localhost:4317)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置导出 trace 的服务名称。
语法
/subsystem=opentelemetry:write-attribute(name=service-name, value=<service_name>)
/subsystem=opentelemetry:write-attribute(name=service-name, value=<service_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=opentelemetry:write-attribute(name=service-name, value=exampleOpenTelemetryService)
/subsystem=opentelemetry:write-attribute(name=service-name, value=exampleOpenTelemetryService)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 14 章 参考 复制链接链接已复制到粘贴板!
14.1. MicroProfile Config 参考 复制链接链接已复制到粘贴板!
14.1.1. 默认 MicroProfile Config 属性 复制链接链接已复制到粘贴板!
MicroProfile Config 规范默认定义三个 ConfigSources。
ConfigSources 根据常规数字进行排序。如果需要为后续部署覆盖配置,则在较高情况的 ConfigSource 之前会覆盖较低或dinal ConfigSource。
ConfigSource | ordinal |
|---|---|
| 系统属性 |
|
| 环境变量 |
|
|
classpath 上找到的属性文件 |
|
14.1.2. MicroProfile Config SmallRye ConfigSources 复制链接链接已复制到粘贴板!
microprofile-config-smallrye 项目定义了除默认的 MicroProfile ConfigSources 外,您还可以使用的更多 ConfigSources。
ConfigSource | ordinal |
|---|---|
|
subsystem 中的 |
|
|
目录中的 |
|
|
来自类的 |
|
没有为这些 ConfigSources 指定明确的 ordinal。它们继承 MicroProfile 配置规范中找到的默认值。
14.2. MicroProfile Fault Tolerance 参考 复制链接链接已复制到粘贴板!
14.2.1. MicroProfile Fault Tolerance 配置属性 复制链接链接已复制到粘贴板!
小型容错规范除了 MicroProfile 容错规范中定义的属性外,还定义了下列属性:
| 属性 | 默认值 | 描述 |
|---|---|---|
|
|
| 线程池中的最大线程数量。 |
|
|
| 线程池应使用的队列的大小。 |
14.3. MicroProfile JWT 参考 复制链接链接已复制到粘贴板!
14.3.1. MicroProfile Config JWT 标准属性 复制链接链接已复制到粘贴板!
microprofile-jwt-smallrye 子系统支持以下 MicroProfile 配置标准属性:
| 属性 | 默认 | 描述 |
|---|---|---|
| mp.jwt.verify.publickey | NONE |
使用其中一个支持的格式编码的公钥的字符串。如果您设置了 |
| mp.jwt.verify.publickey.location | NONE |
公钥的位置可以是相对路径或 URL。如果您设置了 |
| 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
14.4. MicroProfile OpenAPI 参考 复制链接链接已复制到粘贴板!
14.4.1. MicroProfile OpenAPI 配置属性 复制链接链接已复制到粘贴板!
除了标准 MicroProfile OpenAPI 配置属性外,JBoss EAP 还支持下列额外 MicroProfile OpenAPI 属性:这些属性可以在全局和应用范围内应用。
| 属性 | 默认值 | 描述 |
|---|---|---|
|
|
| 启用或禁用 OpenAPI 端点的注册。
当设置为
您可以对此属性进行参数化,以选择性地在不同环境中启用或禁用 您可以使用此属性来控制与给定虚拟主机关联的应用应生成 MicroProfile OpenAPI 模型。 |
|
|
| 您可以使用此属性为与虚拟主机关联的多个应用程序生成 OpenAPI 文档。
在与同一虚拟主机关联的每个应用程序上设置不同的 |
|
|
| 指明自动生成的服务器记录是绝对或相对于 OpenAPI 端点的位置。 需要服务器记录来确保存在非根上下文路径,OpenAPI 文档的用户可以构建与 OpenAPI 端点主机相关的 REST 服务的有效 URL。
当设置为 |
14.5. MicroProfile Reactive Messaging 参考 复制链接链接已复制到粘贴板!
14.5.1. MicroProfile 被动消息传递连接器,用于与外部消息传递系统集成 复制链接链接已复制到粘贴板!
以下是 MicroProfile 配置规范所需的被动消息传递属性密钥前缀的列表:
-
mp.messaging.incoming.[channel-name].[attribute]=[value] -
mp.messaging.outgoing.[channel-name].[attribute]=[value] -
mp.messaging.connector.[connector-name].[attribute]=[value]
请注意,channel-name 是 @Incoming.value () 或 @Outgoing.value ()。要清楚起见,请查看这个一组连接器方法示例:
在本例中,所需的属性前缀如下:
-
mp.messaging.incoming.from.这定义了receive ()方法。 -
mp.messaging.outgoing.to.这将定义send ()方法。
请记住,这是一个示例。因为不同的连接器可识别不同的属性,所以您指示的前缀取决于您要配置的连接器。
14.5.2. 重新主动消息传递流和用户重新初始化代码之间的数据交换示例 复制链接链接已复制到粘贴板!
以下是重新主动消息传递流和通过 @Channel 和 Emitter 结构触发的代码之间的数据交换示例:
行中详情:
在本例中,MicroProfile Reactive Messaging 正在侦听 my-stream 内存流,因此通过 Emitter 发送的消息会收到注入的发布者。但请注意,需要满足以下条件才能使这个数据交换成功:
-
在调用
Emitter.send ()之前,该频道必须具有有效的订阅。在本例中,请注意构造器调用的subscribeAndAllowMultipleSubscriptions ()方法确保 bean 可用于用户代码调用时具有活跃的订阅。 -
在注入的 publisher 中只能有一个
。如果要使用 REST 调用公开接收发布程序,其中每个调用订阅poll ()方法会导致对destpublisher 的新订阅,您必须实施自己的发布程序,以便从注入的每个客户端广播数据。
14.5.3. Apache Kafka 用户 API 复制链接链接已复制到粘贴板!
您可以使用 Apache Kafka 用户 API 来获取有关收到消息 Kafka 的更多信息,并影响 Kafka 处理消息的方式。此 API 存储在 io/smallrye/reactive/messaging/kafka/api 软件包中,它由以下类组成:
IncomingKafkaRecordMetadata.这个元数据包含以下信息:-
Kafka 记录
密钥,由消息表示。 -
用于
消息的 Kafka 主题和分区,以及这些消息中的偏移量。 -
Messagetimestamp和timestampType。 -
Message标头.这些是应用程序可在生成端附加的信息,并在消费端接收信息。
-
Kafka 记录
OutgoingKafkaRecordMetadata.使用这个元数据,您可以指定或覆盖 Kafka 处理信息的方式。它包含以下信息:-
Kafka 视为消息键的密钥。
-
您希望 Kafka 使用
的主题。 -
分区。 -
时间戳,如果您不希望 Kafka 生成
的时间戳。 -
标头.
-
Kafka 视为消息键的密钥。
-
KafkaMetadataUtil包含将OutgoingKafkaRecordMetadata写入Message的工具方法,并从Message读取IncomingKafkaRecordMetadata。
如果您将 OutgoingKafkaRecordMetadata 写入发送到未映射到 Kafka 的频道的消息,则被动消息传递框架会忽略它。相反,如果您从未映射到 Kafka 的频道 读取 IncomingKafkaRecordMetadata,则该消息会返回 null。
如何写入和读取消息 键的示例
microprofile-config.properties 文件中的 Kafka 映射示例
您必须为传出频道指定 key.serializer,并为传入频道指定 key.deserializer。
14.5.4. Kafka 连接器的 MicroProfile Config 属性文件示例 复制链接链接已复制到粘贴板!
这是 Kafka 连接器的简单 microprofile-config.properties 文件示例。其属性与示例中的属性对应 "MicroProfile 重新主动消息传递连接器,以与外部消息传递系统集成"。
| entry | 描述 |
|---|---|
|
| 这些是"频道"。 |
|
| 这些是"方法"。
请注意, |
|
|
这将指定应用程序必须连接到的 Kafka 代理的 URL。您还可以在频道级别指定一个 URL,如下所示: |
|
|
这表示您希望要频道从 Kafka 接收信息。
小型被动消息传递是用于构建应用程序的框架。请注意, |
|
|
这表示您要将数据发送到名为 Kafka "topic" 是一个类别或源名称,信息存储在并发布到其中。所有 Kafka 信息都组织为主题。生产者应用将数据写入主题和消费者应用,从 主题中读取数据。 |
|
|
这告知连接器使用 |
|
|
这表示您要使用 |
|
|
这表示您的连接器应该从名为 |
|
|
这告知连接器在调用 |
这个属性列表并不全面。如需更多信息,请参阅 SmallRye Reactive Messaging Apache Kafka 文档。
强制 MicroProfile 主动消息传递前缀
MicroProfile Reactive 消息传递规范需要 Kafka 的以下方法属性密钥前缀:
-
mp.messaging.incoming.[channel-name].[attribute]=[value]` -
mp.messaging.outgoing.[channel-name].[attribute]=[value]` -
mp.messaging.connector.[connector-name].[attribute]=[value]`
请注意,channel-name 是 @Incoming.value () 或 @Outgoing.value ()。
现在考虑以下方法对示例:
在这个方法对示例中,请注意以下所需属性前缀:
-
mp.messaging.incoming.from.此前缀选择属性作为receive ()方法的配置。 -
mp.messaging.outgoing.to.此前缀选择属性作为send ()方法的配置。
14.5.4.1. 配置安全 MicroProfile 被动消息 Apache Kafka 连接器 复制链接链接已复制到粘贴板!
要使用自签名证书配置 Apache Kafka 连接器客户端,请在 microprofile-config.properties 文件中定义 client-ssl-context。您可以在连接器和频道级别进行此操作。
以下示例演示了如何配置使用 SSL/TLS 保护的 Apache Kafka 连接器。
连接器级别 client-ssl-context 定义示例
mp.messaging.incoming.from.security.protocol=SSL mp.messaging.outgoing.to.security.protocol=SSL mp.messaging.connector.smallrye-kafka.wildfly.elytron.ssl.context=exampleSSLContext
mp.messaging.incoming.from.security.protocol=SSL
mp.messaging.outgoing.to.security.protocol=SSL
mp.messaging.connector.smallrye-kafka.wildfly.elytron.ssl.context=exampleSSLContext
只有在使用自签名证书时,才需要属性 mp.messaging.connector.smallrye-kafka.wildfly.elytron.ssl.context。
不要在生产环境中使用自签名证书。只使用证书颁发机构(CA)签名的证书。
您可以为频道指定 client-ssl-context,如下所示:
频道级 client-ssl-context 定义示例
mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
在示例中,exampleSSLContext 仅与来自 的传入频道关联。
| entry | 描述 |
|---|---|
|
| 这指定了在连接到代理时要使用安全的传入频道连接。 |
|
| 这指定在连接到代理时要使用安全的传出频道连接。 |
|
| 如果 Kafka 代理使用证书颁发机构(CA)签名证书保护,则不需要指定此属性。 |
如果您使用自签名证书,请在管理模型的 /subsystem=elytron/client-ssl-context 444 下指定 Elytron 子系统中定义的 SSLContext。
不要在生产环境中使用自签名证书。只使用证书颁发机构(CA)签名的证书。
您可以使用以下管理 CLI 命令定义 client-ssl-context :
Example
/subsystem=elytron/client-ssl-context=exampleSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager)
/subsystem=elytron/client-ssl-context=exampleSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager)
当 SSL/TLS 连接与 SCRAM-SHA-512 身份验证一起使用时,SSL/TLS 协议提供加密,但不用于身份验证。要使用 SCRAM-SHA-512 协议验证连接,请参阅 配置 MicroProfile Reactive Messagaging Kafka 连接器以使用 SASL_PLAINTEXT 和 SASL_SSL 身份验证协议。
Apache Kafka 使用 简单身份验证和安全层 (SASL)协议来验证连接到 Apache Kafka 侦听器 的客户端。您可以将 监听程序 配置为使用未加密的 普通 类型和加密的 tls 类型通信。Apache Kafka 的流将 SASL 与 Salted Challenged Response Authentication Mechanism (SCRAM)协议(SASL SCRAM-SHA-512)相结合来提供身份验证。您必须定义一个 Kafka 自定义资源和 KafkaUser 自定义资源 YAML 文件,以便为两种类型的监听程序配置身份验证。
如果在服务器上配置了 SASL,即 Kafka 侦听程序 配置为使用 SCRAM-SHA-512 身份验证,客户端必须指定安全协议。如果连接到使用 TLS 加密 的监听程序,此协议应为 SASL_SSL。如果没有加密 侦听器,则协议应为 SASL_PLAINTEXT。客户端配置必须通过将其设置为使用 SCRAM-SHA-512 来指定 SASL 机制。
当 SCRAM-SHA-512 身份验证与 SSL/TLS 连接一起使用时,SSL/TLS 协议提供加密,但不用于身份验证。要保护与 SSL/TLS 的连接,请参阅配置安全 MicroProfile 被动消息 Apache Kafka 连接器。
为 使用普通 类型未加密的通信和 SASL SCRAM-SHA-512 身份验证 的监听程序 设置客户端身份验证。
先决条件
已安装 Apache Kafka 集群 Operator 的流。
注意集群操作器默认生成
Secret资源。客户端配置中必须与的用户名和密码Secret资源定义的用户名和密码匹配有关创建自定义
Secret资源的更多信息,请参阅自定义密码配置。如需有关操作器生成的
Secret资源的更多信息,请参阅 Operator 生成的 Secret。
流程
将 Kafka 自定义资源定义为 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将您的 KafkaUser 自定义资源定义为 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KafkaUser
.authentication定义应与监听器.authentication定义匹配。在
microprofile-config.properties文件中配置您的客户端:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意必须与集群操作器生成的用户名和密码Secret资源中的用户名和密码匹配。
14.5.5. AMQP 连接器的 MicroProfile Config 属性文件示例 复制链接链接已复制到粘贴板!
这是高级消息队列协议(AMQP)连接器的简单 microprofile-config.properties 文件示例。其属性与 MicroProfile 被动消息传递连接器中的示例中的属性对应,用于与外部消息传递系统集成。
| entry | 描述 |
|---|---|
|
| 这些是"频道"。 |
|
| 这些是"方法"。
请注意, |
|
|
这将指定应用程序必须连接到的 AMQP 代理的 URL。您还可以在频道级别指定一个 URL,如下所示: |
|
| 这将指定 AMQP 代理的端口。 |
|
| 这表示您希望频道将消息发送到 AMQP。
小型被动消息传递是用于构建应用程序的框架。请注意, |
|
|
这表示您要将数据发送到地址 |
|
|
这表示您要使用 |
|
|
这表示 |
有关 SmallRye Reactive Messaging 的 AMQP 连接器支持的属性的完整列表,请参阅 SmallRye Reactive Messaging AMQP Connector Configuration Reference。
连接到安全 AMQP 代理
要与通过 SSL/TLS 和简单身份验证和安全层(SASL)保护的 AMQ 代理连接,请在 microprofile-config.properties 文件中定义用于连接的 client-ssl-context。您可以在连接器级别以及频道级别进行此操作。
连接器级别 client-ssl-context 定义示例
amqp-use-ssl=true mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context=exampleSSLContext
amqp-use-ssl=true
mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context=exampleSSLContext
只有在使用自签名证书时,才需要属性 mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context。
不要在生产环境中使用自签名证书。仅使用证书颁发机构(CA)签名的证书。
您还可以为频道指定 client-ssl-context,如下所示:
频道级 client-ssl-context 定义示例
mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
在示例中,exampleSSLContext 仅与来自 的传入频道关联。
| entry | 描述 |
|---|---|
|
| 这指定了我们在连接到代理时使用安全连接。 |
|
| 如果 AMQ 代理使用证书颁发机构(CA)签名证书进行保护,则不需要指定此属性。
如果您使用自签名证书,请在管理模型的 重要 不要在生产环境中使用自签名证书。仅使用证书颁发机构(CA)签名的证书。
您可以使用以下管理 CLI 命令定义
/subsystem=elytron/client-ssl-context=exampleSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager)
如需更多信息,请参阅为 客户端证书配置信任存储和信任管理器,在 JBoss EAP 中配置 SSL/TLS 指南中的为双向 SSL/TLS 配置 服务器证书。 |
14.6. OpenTelemetry 参考 复制链接链接已复制到粘贴板!
14.6.1. OpenTelemetry 子系统属性 复制链接链接已复制到粘贴板!
您可以修改 opentelemetry 子系统属性来配置其行为。属性按它们配置的不同方面分组: exporter、sampler 和 span 处理器。
| 属性 | 描述 | 默认值 |
|---|---|---|
|
| OpenTelemetry 推送 trace 的 URL。把它设置为您的 exporter 侦听的 URL。 | |
|
| 将 trace 发送到的导出器。它可以是以下之一:
|
|
| 属性 | 描述 | 默认值 |
|---|---|---|
|
|
要导出的 trace 的比率。该值必须在 |
|
| 属性 | 描述 | 默认值 |
|---|---|---|
|
|
JBoss EAP 连续两个导出间隔(毫秒)。只有在将属性 |
|
|
| 在取消前允许导出完成的最大时间(毫秒)。 |
|
|
|
每个批处理中发布的 trace 的最大数量。这个数字应该较低或等于 |
|
|
|
导出前到队列的最大 trace 数量。如果应用程序创建更多 trace,则不会记录它们。只有在将属性 |
|
|
| 要使用的范围处理器的类型。该值可以是以下之一:
|
|