我想知道是否有一种方法可以访问Apache Artemis中的MBean值。问题在于,MBean访问受management.xml
中定义的角色访问保护。当您访问MBean时,您应该在设置中具有必需的角色,但是从Java应用程序访问MBean时,我无法应用角色。使用VisualVM时也会发生同样的事情,我可以看到MBean的列表,但是由于访问限制,我看不到MBean的值。
一种解决方法是从<authorization>
中实际删除management.xml
元素,或仅在org.apache.activemq.artemis
元素中添加<whitelist>
。
如果我可以在运行时通过反射来做到这一点,那就太好了。我已经尝试了几次,但没有取得太大的成功。有没有一种方法可以在运行时覆盖Artemis的任何属性,并且可以进行访问?
答案 0 :(得分:1)
MBean访问限制是代理安全性的一部分。如果有一种方法可以规避该安全性,或者在没有适当的身份验证和授权的情况下仅在运行时禁用它,则将是一个重大的安全漏洞。如果没有限制MBean访问,那么具有远程访问权限的任何人都可以关闭代理,甚至删除队列中的所有消息。
如果您想不受限制地访问MBean,则需要按照您的说明更改management.xml
。
您还可以从您的应用程序中提交正确的用户名和密码,以便经纪人将授予您访问权限。