我使用 ActiveMQ Artemis 2.33.0 的嵌入式实例作为 Spring Boot 项目的一部分。
我可以从 Web 控制台 (Hawtio) 的外部部署连接到该嵌入式实例,但每次连接时,我的 Spring Boot 进程都会在进程日志中抛出以下错误:
ERROR: jolokia-actuator-endpoint: Error 404
javax.management.InstanceNotFoundException: hawtio:type=security,area=jmx,name=ArtemisJMXSecurity
如何防止我的进程抛出该异常?
ActiveMQ Artemis Web 控制台查找
hawtio:type=security,area=jmx,name=ArtemisJMXSecurity
MBean 以验证管理授权。如果您想启用此功能,那么我相信当您启动 Java 时,您需要将系统属性 javax.management.builder.initial
设置为:
org.apache.activemq.artemis.core.server.management.ArtemisMBeanServerGuard
org.apache.activemq.artemis.core.server.management.ArtemisRbacMBeanServerBuilder
例如:
java ... -Djavax.management.builder.initial=org.apache.activemq.artemis.core.server.management.ArtemisMBeanServerGuard ...
ArtemisMBeanServerGuard
将自动授予您三种不同角色的权限:
amq
:具有此角色的用户将拥有完全控制权来查看和更新 MBean 属性、执行管理操作等。view
:具有此角色的用户将能够查看 MBean 属性和列表数据,但无法更改任何内容update
:类似于 view
角色,但具有更新 MBean 属性的能力您可以通过名为
management.xml
的文件提供自定义配置,但这需要配置一些额外的类,而这在 Spring Boot 中并不容易做到。
ArtemisRbacMBeanServerBuilder
在文档中进行了讨论。配置更容易,因为它直接从 security-settings
读取其配置,您可以通过 broker.xml
或嵌入式配置 API 进行配置。