程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2SE >> JMX+J2SE5.0實現Web應用的安全管理(3)

JMX+J2SE5.0實現Web應用的安全管理(3)

編輯:J2SE

六、 創建JMXServiceURL
 
到現在為止,我們已經創建了一個MBeanServer並且用它注冊了LoginStatsMBean。下一步是使得該服務器對客戶可用。為此,我們必須創建一個JMXServiceURL-它描述了客戶將用來存取該JMX服務的URL:
 
JMXServiceURL url = new JMXServiceURL("rmi",null,
 Constants.MBEAN_SERVER_PORT,
 "/jndi/rmi://localhost:" +Constants.RMI_REGISTRY_PORT +"/jmxapp");
 
讓我們細致地分析一下上面一行代碼。該JMXServiceURL構造器使用了四個參數:
 
1. 在連接時使用的協議(rmi,jmxmp,iiop,等等)。
 
2. JMX服務的主機。用localhost作為參數就足夠了。然而,提供null強制JMXServiceURL找到可能是最好的主機名。例如,在這種情況下,它將把null翻譯成zarar-這是我的計算機的名字。
 
3. JMX服務使用的端口。
 
4. 最後,我們必須提供URL路徑-它指示怎樣找到JMX服務。在這種情況下,它會是/jndi/rmi://localhost:1099/jmxapp。
 
其中,/jndi部分是指,客戶必須為JMX服務做一下JNDI查詢。rmi://localhost:1099指示,存在一個運行於本機的端口1099的RMI注冊。這裡的jmxapp是在RMI注冊中唯一標識這個JMX服務的。在JMXServiceURL對象上的一個toString()產生下列結果:
 
service:jmx:rmi://zarar:9589/jndi/rmi://localhost:1100/jmxapp
 
上面是客戶將最終使用來連接到該JMX服務的URL。J2SE 5.0文檔有關於這個URL結構的更為詳細的解釋。
 
(一) 保護服務
 
J2SE 5.0提供了一種有利於JMX用一種容易的方式進行用戶認證的機制。我創建了一個簡單的文本文件-它存儲用戶名和口令信息。文件的內容是:
 
zarar siddiqi
 
fyodor DOStoevsky
 
用戶zarar和fyodor被分別通過口令siddiqi和DOStoevsky認證。下一步是創建並保護一個JMXConnectorServer,它暴露了該MbeanServer。username/password文件的路徑被存儲在該鍵下的一個映射中-jmx.remote.x.passWord.file。這個映射在以後創建JMXConnectorServer時使用。
 
ServletContext context = Config.getServletContext();
 //得到存儲jmx用戶信息的文件
 String userFile =context.getRealPath("/")+"/Web-INF/classes/"+Constants.JMX_USERS_FILE;
 //創建authenticator並且初始化RMI服務器
 Map<string> env = new HashMap<string>();
 env.put("jmx.remote.x.passWord.file", userFile);
 現在,讓我們創建JMXConnectorServer。下面一行代碼完成這一功能:
 connectorServer = JMXConnectorServerFactory.
 newJMXConnectorServer(url, env, server);
 
這個JMXConnectorServerFactory.newJMXConnectorServer(JMXServiceURL,Map,MBeanServer)方法使用我們剛創建的三個對象作為參數-它們是JMXServiceURL,存儲認證信息的映射和MBeanServer。其中,connectorServer實例變量允許我們分別在應用程序啟動和停止時,分別用start()和stop()來啟動和停止JMXConnectorServer。
 
提示 盡管JSR 160的J2SE 5.0實現相當有力;但是另外的實現,例如MX4J,也提供了一些類-它們提供了方便的特性,例如口令混淆,也就是PassWordAuthenticator類。

本文來自編程入門網:http://www.bianceng.cn/Programming/Java/201107/28048_3.htm

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved