【发布时间】:2019-03-11 09:43:53
【问题描述】:
我想知道是否有办法在 Apache Artemis 中访问 MBean 的值。问题是MBeans 访问受到management.xml 中定义的角色访问的保护。当您访问 MBean 时,您应该在设置中具有所需的角色,但是在我的 Java 应用程序中,当我访问 MBean 时我无法应用角色。当我使用 VisualVM 时也会发生同样的情况,我可以看到 MBean 列表,但由于访问限制,我看不到 MBean 的值。
一种解决方法是从management.xml 中实际删除<authorization> 元素,或者在<whitelist> 元素中简单地添加org.apache.activemq.artemis。
如果我可以通过运行时的反射来做到这一点,那就太好了。我已经尝试了几次,但没有太大的成功。有没有办法在运行时覆盖 Artemis 的任何属性,从而使访问成为可能?
【问题讨论】:
-
“从我的 Java 应用程序中我无法申请角色”是什么意思?代理应用角色以响应客户端的凭据(即用户名和密码或 SSL 证书)。您无需从客户端应用程序中指定与角色相关的任何内容。
-
我没有将 Artemis 与客户端库一起使用。我正在尝试使用 JMX 在我的 Java 应用程序中读取 MBean 值。问题是我无法访问 MBean 值,因为我的 Java 应用程序没有必要的访问权限来获取每个 Artemis MBean 的值。
-
奇怪的是,如果我在调试模式下运行 Artemis,所有 MBean 值都存在,而且 VisualVM 也可以访问这些值。
-
为什么不能使用 JMX 从应用程序中传递用户名和密码?
-
好吧,我试图不使用连接端口 (1099) 来访问 MBean。这就是为什么我问反射是否可以帮助我访问这些 MBean。有
JMXAccessControlList,我可以用org.apache.activemq.artemis(白名单)扩展它,但是当我尝试通过反射使用它时发生了一些有趣的事情。
标签: jmx activemq-artemis