Java Glassfish-获取会话中的所有队列
我的问题很简单,但我很难找到解决方案。 我希望能够获取服务器中的所有队列(或会话,也可以)。可能吗 我的情况如下: 我是openMQ、Glassfish、activeMQ等的新手。我为activeMQ开发了一个监控系统,在该系统中,我获取所有现有队列并向用户显示,这样它就可以获取消息数量等信息。 为此,我有以下代码:Java Glassfish-获取会话中的所有队列,java,glassfish,Java,Glassfish,我的问题很简单,但我很难找到解决方案。 我希望能够获取服务器中的所有队列(或会话,也可以)。可能吗 我的情况如下: 我是openMQ、Glassfish、activeMQ等的新手。我为activeMQ开发了一个监控系统,在该系统中,我获取所有现有队列并向用户显示,这样它就可以获取消息数量等信息。 为此,我有以下代码: ActiveMQConnection.makeConnection("tcp://localhost:61616"); activeMQConnection.start(); /
ActiveMQConnection.makeConnection("tcp://localhost:61616");
activeMQConnection.start();
//Get queues
DestinationSource destinationSource = activeMQConnection.getDestinationSource();
Set<ActiveMQQueue> queues = destinationSource.getQueues();
ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("cn=QueueConnectionFactory");
Connection=connectionFactory.createConnection();
会话会话=connection.createSession(false,Session.AUTO_ACKNOWLEDGE)
Queue myQueue=session.createQueue(“myQueue”)
这是好的,因为它将是完全独立的(我认为,必须测试它)。但问题是我必须注册队列,这是我不想做的事情。我希望在不需要注册的情况下获取服务器中所有现有的队列,但是我找不到任何GetQueues()方法或任何方法来模拟其行为
我还发现activeMQ中的DestinationSource类继承自MessageListener,但该类不提供任何类似的方法:(
你能帮帮我吗
谢谢,,
Oscar我可以使用JMX实现这一点,下面是代码:
HashMap environment = new HashMap();
String[] credentials = new String[] { "user", "pass" };
environment.put(JMXConnector.CREDENTIALS, credentials);
JMXServiceURL url = new JMXServiceURL("URL");
// Get JMX connector, supplying user name and password
JMXConnector jmxc1 = JMXConnectorFactory.connect(url, environment);
// Get MBean server connection
MBeanServerConnection mbsc = jmxc1.getMBeanServerConnection();
ObjectName destMgrConfigName = new ObjectName(MQObjectName.DESTINATION_MANAGER_MONITOR_MBEAN_NAME);
// Create operation's parameter and signature arrays
Object opParams[] = {};
String opSig[] = {};
// Invoke operation
ObjectName[] objectNames = (ObjectName[]) mbsc.invoke(destMgrConfigName, DestinationOperations.GET_DESTINATIONS, opParams, opSig);
for (ObjectName objectName : objectNames) {
System.out.println(objectName.getCanonicalName());
System.out.println(objectName.getKeyProperty("name"));
}
更多参考资料如下: