八、 访问我们的JMX服务
我们可以有好几种方法来存取JSR 160服务。为此,我们可以通过编程或通过使用一个GUI来实现。
(一) 使用MC4J连接
通过把jmxapp.war复制到Tomcat的webapps目录来发布该应用程序。下载并且安装MC4J。一旦安装完,创建一新的类型JSR 160的服务器连接并且指定该服务器URL-它在应用程序启动时在应用程序服务器日志中打印。在我的示例中,它是:
service:jmx:rmi://zarar:9589/jndi/rmi://localhost:1100/jmxapp
提供用户名和口令,MC4J分别把它们参考为"Principle"和"Credentials"。点击Next将把你带到一个屏幕-在此你可以定制你的classpath。默认设置应该工作正常,并且你可以点击"Finish"来连接到该JMX服务。一旦建立连接,浏览如图1所示的MC4J树结构,直到你找到LoginStats MBean实现的"Properties"选项。

图1.MC4J视图

图2.属性窗口
通过把jmxapp.war复制到Tomcat的webapps目录发布该应用程序。请注意一下在应用程序启动时所打印的URL。接下来,发布这个应用程序的另一个实例-通过改变Constants类中的RMI_REGISTRY_PORT并且MBEAN_SERVER_PORT变量,这样该应用程序的第二个实例就不会试图使用已经在使用的端口了。改变在build.xml文件中的app.name属性,以便新的实例将被发布到一个不同的上下文(例如, jmxapp2)。用ant创建一个清理的war文件-它将在其目录下创建jmxapp2.war。把jmxapp2.war复制到Tomcat的 webapps目录。该应用程序将要发布,而且现在你有相同应用程序的两个实例在运行了。我再次提醒你注意在启动时所打印的URL。
下载和安装jManage。一旦安装了,使用jManage的web接口来创建一个JSR 160应用程序-通过使用主页中的"添加新应用程序"链接。"添加应用程序"页面显示在图3中:

图3."添加应用程序"页面

图4.添加应用程序簇页面

图5.针对jmxapp和jmxapp2的簇视图
九、 结论
现在你已经知道了怎样使你的新的和现有web应用程序支持JMX并且安全地管理它们-使用MC4J和jManage。尽管J2SE 5.0提供了JMX说明书的一个有力的实现,但是另外的开源工程例如XMOJO和MX4J还提供了另外的特征,例如经由web接口甚至更多的方式的连接。如果有兴趣的读者想了解更多地有关JMX的知识,你可以看一下J. Steven Perry写的《Java Management Extensions》一书。如果你对远程应用程序管理感兴趣的话,Jeff Hanson写的《Connecting JMX客户and Servers》将是很有阅读价值的,其中提供了许多真实世界的例子。
