java - Glassfish - 获取 session 中的所有队列

标签 java glassfish

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

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

ActiveMQConnection.makeConnection("tcp://localhost:61616");
activeMQConnection.start();

//Get queues
DestinationSource destinationSource = activeMQConnection.getDestinationSource();
Set<ActiveMQQueue> queues = destinationSource.getQueues();

最后一行获取连接的所有队列,这正是我所需要的。但这是我的 ActiveMQ 代码。

现在团队决定改用 openMQ,我必须调整我的监控系统才能处理这个问题。我想使用 LDAP,这样我就可以独立于技术进行操作。经过大量研究,我得出了这段代码:

ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("cn=QueueConnectionFactory");

连接连接=connectionFactory.createConnection(); session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

队列 myQueue = session.createQueue("myQueue");

这很好,因为它将完全独立(我认为,必须测试它)。但问题是我必须注册队列,这是我不想做的。我想获取服务器中所有现有的队列,而无需注册,但我找不到任何 GetQueues() 方法或任何模仿其行为的方法。

我还发现activeMQ中的DestinationSource类继承自MessageListener,但是这个类没有提供任何类似的方法:(

你能帮我一下吗?

谢谢你, 奥斯卡

最佳答案

我能够使用 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"));
  }

更多引用:http://forums.oracle.com/forums/thread.jspa?threadID=2129291&tstart=0

关于java - Glassfish - 获取 session 中的所有队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4153207/

相关文章:

java - 当两个场景都显示时,我可以在一个场景中设置另一个场景中的 TextField 值吗?

Java:谷歌地图的替代品

java - 没有名为 'entityManagerFactory' 的可用 bean,但已设置entityManagerFactoryRef

java - 关于 Java 中 Web 应用程序的 "org.eclipse.wst.server.core"文件夹的几个一般问题

java - JDBC 领域身份验证错误 Glassfish 4

java - 是否有一个 Android 监听器用于切换列表上的 View 属性 boolean 值?

Apache 在 Glassfish v3 前面使用 mod_proxy_ajp 使用 SSL

java - Derby Pool ping 在 Glassfish 中因 java.net.ConnectException 而失败

java - 部署 Java 应用程序 (Tomcat/Glassfish)

java - 如何监控文本java fx 中的打印持续时间?