首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JMX 監控實戰:JBoss 與 Jetty/Red5 連接代碼全解析

     編輯:Java 相關知識

生產環境監控 Web 服務器狀態(配置、記憶體、效能、部署應用),JMX 是標準切入點。本文提供 JBoss(RMIAdaptor + ObjectName 查詢)與 Jetty/Red5(JMXServiceURL + MBeanServerConnection)兩套完整連接與查詢代碼,涵蓋重試、超時、認證、異常處理等工程化細節。

JBoss 監控關鍵路徑

// 1. 獲取 RMIAdaptor
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "jnp://host:port");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
InitialContext ic = new InitialContext(props);
RMIAdaptor adaptor = (RMIAdaptor) ic.lookup("jmx/rmi/RMIAdaptor");

// 2. 查詢 Server 版本
Set mbeans = adaptor.queryMBeans(new ObjectName("jboss.system:type=Server"), null);
for (ObjectInstance oi : mbeans) {
    String version = adaptor.getAttribute(oi.getObjectName(), "Version").toString();
}

// 3. 列出所有 Web 應用
Set webApps = adaptor.queryMBeans(new ObjectName("jboss.web.deployment:*"), null);

Jetty/Red5 監控關鍵路徑

String url = "service:jmx:rmi:///jndi/rmi://host:port/red5";
JMXServiceURL serviceUrl = new JMXServiceURL(url);
Map env = new HashMap<>();
env.put(JMXConnector.CREDENTIALS, new String[]{user, pass});
JMXConnector connector = JMXConnectorFactory.connect(serviceUrl, env);
MBeanServerConnection mbsc = connector.getMBeanServerConnection();

ObjectName name = new ObjectName("org.red5.server:type=org.red5.server.WebScope,name=admin");
MBeanInfo info = mbsc.getMBeanInfo(name);
for (MBeanAttributeInfo attr : info.getAttributes()) {
    if ("Running".equals(attr.getName())) {
        boolean running = (Boolean) mbsc.getAttribute(name, "Running");
    }
}

工程化要點

  • 連接重試機制(指數退避)
  • 超時控制(連接/讀取分離)
  • 憑證安全傳遞
  • 資源確釋關閉(finally 塊)
  • ObjectName 通配符查詢批量獲取
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved