我有一个使用JavaFX的Java应用程序。我不明白如何按角色连接。以便每个角色都有自己的校对权限等。我知道如何向ActiveMQ添加角色,但我的应用程序似乎没有选择就连接到主角色。
public static MBeanServerConnection connectBroker(String brokerUrl) {
QueueConnection connection = null;
try {
QueueConnectionFactory cf = new ActiveMQQueueConnectionFactory(brokerUrl);
connection = cf.createQueueConnection();
connection.start();
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(BuildGet.JMX_URL));
return connector.getMBeanServerConnection();
} catch (JMSException | IOException e) {
throw new RuntimeException(e);
}
}
如何通过角色连接?
你实际上并没有“按角色”连接你用用户名和密码连接。
角色是代理上组织用户的方式。您可以在给定角色中拥有一个或多个用户,然后将权限授予该角色作为一个整体。这使得组织用户和配置安全性变得更加容易。
请记住,消息传递用户(例如使用JMS的用户)的安全配置与管理用户(例如使用JMX的用户)是分开的。前者是通过broc. xml
中的security-settings
完成的,后者是通过管理.xml
中的授权
完成的。
在您的情况下,您可以为JMX连接提供凭据,如下所示:
HashMap env = new HashMap();
String[] creds = {"myUser", "myPassword"};
env.put(JMXConnector.CREDENTIALS, creds);
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(BuildGet.JMX_URL), env);
需要注意的是,您的ConnectBroker
方法在每次调用时都会泄漏JMS连接。这是因为您创建了一个JMS连接,但您没有关闭它或从方法中返回它。我建议从该方法中完全删除JMS连接,因为它没有真正的用途。