Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Glassfish-获取会话中的所有队列_Java_Glassfish - Fatal编程技术网

Java Glassfish-获取会话中的所有队列

Java Glassfish-获取会话中的所有队列,java,glassfish,Java,Glassfish,我的问题很简单,但我很难找到解决方案。 我希望能够获取服务器中的所有队列(或会话,也可以)。可能吗 我的情况如下: 我是openMQ、Glassfish、activeMQ等的新手。我为activeMQ开发了一个监控系统,在该系统中,我获取所有现有队列并向用户显示,这样它就可以获取消息数量等信息。 为此,我有以下代码: ActiveMQConnection.makeConnection("tcp://localhost:61616"); activeMQConnection.start(); /

我的问题很简单,但我很难找到解决方案。 我希望能够获取服务器中的所有队列(或会话,也可以)。可能吗

我的情况如下: 我是openMQ、Glassfish、activeMQ等的新手。我为activeMQ开发了一个监控系统,在该系统中,我获取所有现有队列并向用户显示,这样它就可以获取消息数量等信息。 为此,我有以下代码:

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"));
  }
更多参考资料如下: