background image

Java 开发 JMX 监控应用程序内、外部的状况

  Java 管理 API (JMX)对管理 WebLogic 服务器而言是必需的。通过这个 API,你可
以在应用程序服务器里搜索管理 beans (mbeans) 并且通过它们你既可以查询配置信息
又可以查询 runtime

 

监控信息。 此外,通过这个 API

 

还可以用来改变服务器的配置。 事

实上,这个 API 已在控制台和其他的管理工具上使用着,用来完成它们的工作和提供报
告数据。
  这个 API

 

是一个强大的监控工具。让我们来看一个例子。在这个应用程序中,有大部

分 的静 态内 容, 一些 你的 个性 化的 JSP 页面,一个注册系统,一个基于 JMS(Java 
Messaging Services,Java 消息服务)的数据系统,以及一个小付费应用系统。在这个
应用程序中在哪里使用 JMX 对我们有利呢?在静态页面上,你可以为 FileServlet 存取信
息并且可以看到花费了多少时间用来服务静态内容。时间可能比你预期的要少,因为浏览
器自动的在客户端缓存了部分内容。大多数对静态内容的请求将会是 HEAD 请求,用来
检查变化。对于动态页面,在系统中的每个 servlet 是被分别计算地。这个数据不能很好

 

的反映用户的经验 (因为用户在他们送出请求和接到页面的返回之间存在延迟),但是这
些数据告知了平均每个 servlet 花在一个请求上的时间,以及多少个请求被完成。我们的
注册系统是一个实体 bean,而付费系统是一个由外部服务返回的无状态会话 bean  

。 两

个 bean 都能被监控,而且通过这些监控信息可以帮助我们用来优化缓存和池的大小。我
们的数据同样能有助于决定是否我们已经得到了所需要的信息,或是决定多少用户正在
使用数据。吞吐量也可以使用 JMS 的 topic 和 queue 类型的 mbean 的属性来计算。此外,
所有的 JDBC 连接都可以被监控,而且从它们的 mbeans 你能发现多少连接池被争用,
举例来说,这将帮助你判断是否需要更多的数据库客户端授权。
    mbeans   在 WebLogic 服 务 器 中 的 第 二 种 用 途 是 用 于 配 置 信 息 。 通 过 配 置
mbeans,所有资源的配置都被包含在 runtime 中。这些 mbeans 本质上是被包含在
config.xml 文件里的信息的表示。部署在服务器监听端口上的应用程序的所有内容都包
括在这些接口中。大多数个别的属性是直接相关直接;然而,描述一个部署单元的属性集
合是复杂的并且为了方便它们被集合在 weblogic.Deployer 类中。直接访问它们是可能
的,但是除了看配置以及不改变它之外的操作是不被推荐的。其余的属性是随意的,但要
小心,但如果组件(如 JDBC 池)被重新部署或服务器重新启动,大多数这些属性实际上只
改变运行时的行为。这些配置性的 mbeans 应用的作用范围从决定为某一特定应用使用
资源,到调整基于来自监 mbeans 的反馈数值。
  正如你所看到的,这有许多信息――但是如果你对 JMS 和 WebLogic 服务器都不熟
悉,你如何着手呢? 

 

它实际上不那么难。 只要你能使用 JNDI 并且可以阅读 JavaDocs 你

 

就会发现操纵 mbeans 是相当容易的。在下面你所看见的代码示例中,会告诉你如何得
到本地服务器的 mbean home 接口以及 JDBC 池。
  MBeanHome home = (MBeanHome) new
  InitialContext().lookup(MBeanHome.LOCAL_JNDI_NAME);
  Set pools = home.getMBeansByType("JDBCConnectionPool");
  上面的代码给出了对于 JDBC(Java DataBase Connectivity,Java 数据库连接)池
的配置 mbean。如果你想监控连接池而不考虑它们的配置,只要通过添加"Runtime"来
改变 mbean 的类型就可以完成。从这个 mbean 你可以确定重要的信息,比如是否有连