网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.JBuilder2005单元测试之JUnit框架.
.Java环境配置的Classpath使用故障.
.程序分享:从UDDI注册中心查询服.
..NET真的战胜了J2EE吗?它能吗?.
.基于SWING与AWT小应用程序的区别.
.新手入门:学习Java的一点经验心.
.J2ME学习笔记(5)—MIDlets中的图.
.Weblogic70的配置简单手动配置we.
.QuickTime for Java&n.
.详细的 spring 入门实例讲解运用.
.讲解关于编写跨平台Java程序时的.
.配置开发环境(JDK1.5+Tomcat5.5..
.引入Mock类的简单方法.
.计算Java日期.
.java以及其相关性应用.
.Java开发工具Eclipse使用中报错的.
.无状态Enterprise JavaBeans的观.
.JSF(Java Server Face)的使用和经.
.Java Servlet 编程及应用之六.
.用JWSDP将Java和Web服务结合起来.

JMX+J2SE5.0实现Web应用的安全管理

发表日期:2008-1-5


一、 引言

  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的类轮廓是:


上一篇:用Java开发3D游戏之创建场景 人气:697
下一篇:利用JAVA语言实现支持视频点播的WEB服务器 人气:519
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐