国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 11:12:32
字體:
來源:轉載
供稿:網友
一、 引言

  JMX(java治理擴展)提供了一組工具用來治理本地和遠程應用程序、系統對象、設備等。本文將解釋如何使用JMX(JSR 160)來遠程控制web應用程序,并將解釋應用程序中可用于JMX客戶的代碼,同時將展示使用如MC4J和jManage等的不同客戶如何連接到支持JMX的應用程序。此外,我們還將具體地討論使用RMI協議和JNDI來保護通訊層。

  首先我們要分析一個簡單的web應用程序,它監控已經登陸的用戶數目并通過一個安全的JMX服務來顯示該項統計。我們還將運行這個應用程序的多個實例并且從所有的運行實例中跟蹤這個統計數字。當然,你可以下載這個示例web應用程序。它需要你安裝J2SE 5.0 SDK并且你的JAVA_HOME環境變量指向基安裝目錄。J2SE 5.0實現了1.2版本的JMX API和JMX 1.0版本的Remote API。同時還需要一個支持servlet的容器;我使用的是Apache Tomcat 5.5.12。另外,我還使用Apache Ant來構建這一示例應用程序。

  二、 建立示例應用程序

  首先,你要下載示例應用程序并且使用ant war(更多的細節見build.xml中的注釋)來創建一個WAR文件。把jmxapp.war復制到Tomcat的webapps目錄。假定Tomcat正在運行于你的本地機器的端口8080,那么該應用程序的URL將是:

http://localhost:8080/jmxapp

  假如你看到一個提示你輸入名字和口令的登陸屏幕,那么一切已經就緒了。

  三、 跟蹤一些有意義的數據

  本文中的應用程序使用Struts框架來提交登錄表單。一旦提交結束,即執行LoginAction.execute(..)方法-它將簡單地檢查是否用戶的ID為"hello"以及是否其口令為"world"。假如二者都正確,那么登錄成功并且控制被導向login_sUCcess.jsp;假如不正確,那么我們返回到登錄表單。根據登錄成功與否決定調用incrementSuccessLogins(HttpServletRequest)方法還是incrementFailedLogins(HttpServletRequest)方法。現在,讓我們先分析一下incrementFailedLogins(HttpServletRequest):

PRivate void incrementFailedLogins(HttpServletRequest request) {
 Httpsession session = request.getSession();
 ServletContext context =session.getServletContext();
 Integer num = (Integer) context.getAttribute( Constants.FAILED_LOGINS_KEY);
 int newValue = 1;
 if (num != null) { newValue = num.intValue() + 1; }
 context.setAttribute( Constants.FAILED_LOGINS_KEY, new Integer(newValue));
}
  這個方法增加一個在應用程序范圍存儲的FAILED_LOGINS_KEY變量。這個incrementSuccessLogins(HttpServletRequest)方法是以相似的方法實現的。該應用程序追蹤有多少人成功地登錄和有多少人認證失敗。這真不錯,但是我們該如何存取這些數據?這就是引入JMX的原因。

  四、 創建JMX MBeans

  MBeans基礎知識及其適于JMX架構的方面超出了本文所討論的范圍。我們將為我們的應用程序簡單地創建、實現、暴露和保護一個MBean。我們所感愛好的是暴露相應與下列兩個方法的兩種數據。下面是我們的簡單MBean接口:

public interface LoginStatsMBean {
 public int getFailedLogins();
 public int getSuccessLogins();
}
  這兩個方法簡單地返回成功和失敗登陸的數目。LoginStatsMBean的實現-LoginStats,為上面兩種方法提供了一種具體的實現。讓我們分析一下getFailedLogins()實現:

public int getFailedLogins() {
 ServletContext context = Config.getServletContext();
 Integer val = (Integer) context.getAttribute( Constants.FAILED_LOGINS_KEY);
 return (val == null) ? 0 : val.intValue();
}
  該方法返回一個存儲在ServletContext中的值。getSuccessLogins()方法是以相似的方式實現的。

  五、 創建和保護一個JMX代理

  治理應用程序的JMX相關方面的JMXAgent類有以下幾個責任:

  1. 創建一個MBeanServer。

  2. 用MBeanServer注冊LoginStatsMBean。

  3. 創建一個JMXConnector以答應遠程客戶進行連接。

   o 包含對JNDI的使用。

   o 也必須有一個RMI注冊運行。

  4. 使用一個用戶名和口令保護JMXConnector。

  5. 分別在應用程序啟動和停止時,啟動和停止JMXConnector。

  JMXAgent的類輪廓是:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎赉特旗| 花垣县| 甘德县| 平舆县| 金阳县| 岳普湖县| 富蕴县| 新巴尔虎左旗| 平远县| 屏东县| 三河市| 寿光市| 额济纳旗| 南雄市| 台中市| 通榆县| 定陶县| 灌南县| 泽库县| 土默特左旗| 额尔古纳市| 蒙城县| 如东县| 香港 | 岑巩县| 如东县| 个旧市| 镇平县| 治多县| 怀来县| 栾城县| 香河县| 黎川县| 仙游县| 枞阳县| 蛟河市| 大安市| 瓦房店市| 万源市| 习水县| 张北县|