將 MBeanServer 公開為遠程服務需構建 JMXServiceURL:
JMXServiceURL url = new JMXServiceURL("rmi", null,
Constants.MBEAN_SERVER_PORT,
"/jndi/rmi://localhost:" + Constants.RMI_REGISTRY_PORT + "/jmxapp");
參數說明:
rmi。null 讓 API 自動解析最佳主機名(如電腦名稱)。/jndi/rmi://localhost:1099/jmxapp,指示客戶端透過 JNDI 在 RMI 註冊表查找名為 jmxapp 的服務。toString() 輸出:service:jmx:rmi://zarar:9589/jndi/rmi://localhost:1100/jmxapp,即客戶端連接字串。
J2SE 5.0 內建密碼檔認證:
// 密碼檔內容(用戶名 密碼)
zarar siddiqi
fyodor dostoyevsky
// 建立環境映射
Map env = new HashMap<>();
env.put("jmx.remote.x.password.file", userFilePath);
// 建立 JMXConnectorServer
connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbeanServer);
connectorServer.start() / stop() 控制服務生命週期。ServletContext.getRealPath 獲取。MX4J 等第三方實現提供密碼混淆(PasswordAuthenticator)等增強功能。
本文來自編程入門網:原文連結