JMX在Tomcat中的应用(三)

发布时间:2014-10-25 2:19:53
来源:分享查询网

三、Tomcat中的JMX 通过上面JMX的简单介绍和举例,我们对JMX有了一个整体概念。现在我们就来查看一下JMX在Tomcat中的应用。首先,我们使用JConsole查看一下Tomcat中有哪些MBeans。 3.1 首先,请在Eclipse中启动Tomcat,在虚拟机参数中,设置下面几个参数: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl="false" -Dcom.sun.management.jmxremote.authenticate="false" 运行界面如下所示: 3.2 Tomcat运行后,请打开JConsole.exe,我们可以远程连接到localhost:9999,我们可以看到Tomcat中的MBeans如下图所示: 我们从上图可以看出,Tomcat中的MBeans位于Catalina和Users两个domain中,Catalina域名中包含我们所关心的一些Tomcat关键组件,比如说Server、Service、Realm、Engine和Connector等等关键组件,这些MBean分别对应我们前面在Tomcat架构中讲述的那些组件资源。那么,这些组件是如何注册到MBeanServer的呢,注册的流程又是如何,这个问题需要解读Tomcat源代码,此处暂不细表,且看下回分解。 3.3 下面,我们做一个非常有趣的实验,体验一下JMX管理的乐趣。首先请在浏览器中打开http://localhost:8080/examples/jsp/jsp2/el/basic-arithmetic.jsp页面,然后再上图所示的JConsole中的Manager节点下的/examples-->localhost中找到操作中的“listSessionIds”方法,然后点击调用该方法,您会在弹出的对话框中看到您刚才访问basic-arithmetic.jsp页面的sessionId值,它是一个16位的字符串,我的机器上显示为“4998AB8A07480360BC24A9E9C11A39CA”;接下来,请在Manager节点下的/examples-->localhost中找到属性中的sessionIdLength属性,把它的值从16改为22,请关闭浏览器,然后重新打开浏览器,再访问一下上面的页面,这时,您再调用”listSessionIds”方法查看一下sessionId的列表,会发现新产生的sessionId的位数是22位,在我的机器上返回” 4998AB8A07480360BC24A9E9C11A39CA 04348EFDE953D0B56A206BF11A13E1A5CBB14F316B4F”两个sessionId值。当然,您也可以输入sessionId值,调用expireSession方法来让某个session过期。 Tomcat中MBean的管理方式很多,例如,您可以通过下面的方法打印、查找或者管理Tomcat中的MBean,该方法的优点是不用打开RMI端口,所有操作都是通过Servlet转发给MBeanServer完成的,具体步骤如下: a) 首先打开conf目录下的tomcat-users.xml文件,在<tomcat-users>和</tomcat-users>标签之间加上下面两行,然后保存该文件。 <role rolename="manager"/> <user username="admin" password="admin" roles="manager"/> 这表示我们要添加一个新用户,用户名为admin,密码也是admin,用户具有manager权限。 b) 重启Tomcat,然后在浏览器中打开下面的URL,http://localhost:8080/manager/jmxproxy/ ,请输入用户名密码admin/admin,您将看到Tomcat中所有的MBeans。在我的机器上,显示108个MBeans的详细信息。如果您访问http://localhost:8080/manager/jmxproxy/?qry=*%3Aj2eeType=Servlet%2c* ,您将会看到所有已经加载的Servlet的信息,该qry是查找j2eeType=Servlet的所有MBeans。如果您有兴趣,您还可以通过这个jmxproxy来动态设置一些Tomcat中组件运行时的值。

返回顶部
查看电脑版