Java 管理扩展 API (JMX)
Java™ 管理扩展 API (JMX) 用于资源监视和管理。
JMX 是 Java 框架和 API ,它提供了一种使用广泛接受的实现来公开应用程序信息的方法。 然后,可以将各种工具 (例如 JConsole) 配置为读取该信息。 通过将受管 Bean (MBean)-非静态 Java 类与公共构造函数配合使用来公开该信息。 Bean 的 get 和 set 方法显示为 属性 ,而所有其他方法显示为 操作。
您可以连接到 Liberty JVM 服务器中的 JMX ,以在本地和从远程机器查看 MBean 的属性和操作。 本地连接需要将 localConnector-1.0 功能部件添加到 server.xml ,并允许您从同一 JVM 服务器中进行连接。 将 restConnector-1.0 功能部件添加到 server.xml 允许您通过 RESTful 接口进行连接,该接口提供对 JMX 的远程访问。
使用 WebSphere MBean 来监视应用程序
- 首先,必须获取对 MBeanServer的引用。 此示例查找 JvmStats MBean ,并使用 findMBeanServer 方法来检查向哪个服务器注册了 MBean 。 然后,引用正确的 MBeanServer 对象,可以获取对 MBean 的引用,并从其公开的属性中获取数据。 此示例查找 JvmStats MBean的 UpTime 属性。
// Create an ObjectName object for the MBean that we're looking for. ObjectName beanObjName = null; beanObjName = new ObjectName("WebSphere:type=JvmStats"); // Obtain the full list of MBeanServers. java.util.List servers = MBeanServerFactory.findMBeanServer(null); MBeanServer mbs = null; // Iterate through our list of MBeanServers and attempt to find the one we want. for (int i = 0; i < servers.size(); i++) { // Check if the MBean domain matches what we're looking for. mbs = (MBeanServer)servers.get(i); if ( mbs.isRegistered(beanObjName)) { Object attributeObj = mbs.getAttribute(beanObjName, "UpTime"); System.out.println("UpTime of JVM is: " + attributeObj + "."); } }
与 Liberty 中 JMX 的远程连接
到 Liberty JVM 服务器中 JMX 的远程连接需要使用 SSL 连接和 Java Platform, Enterprise Edition (JEE) 角色授权。 然后,客户机代码使用 JMXServiceURL获取对远程 MBean 的引用。
- 通过 REST 连接器访问的所有 JMX MBean 都受名为 administrator的单个 JEE 角色保护。 要提供对此角色的访问权,请编辑 server.xml 并将已认证的用户添加到管理员角色。
有关使用 JEE 角色的更多信息,请参阅 使用 SAF 角色映射进行授权。<administrator-role> <user>myuserid</user> <group>group1</group> </administrator-role> - 远程 RESTful JMX 客户机必须使用 SSL 访问 Liberty JVM 服务器。 要为 Liberty JVM 服务器配置 SSL 支持,请参阅主题 使用 RACF 为 Liberty JVM 服务器配置 SSL (TLS)。 此外, JMX 客户机需要访问 restConnector 客户机端 JAR 文件和包含服务器签名证书的 SSL 客户机密钥库。 restConnector.jar 是 CICS ® WLP 安装的一部分,可从 &USSHOME;/wlp/clients获取。
- 在客户机端代码中,需要创建 JMXServiceURL 对象。 这允许您获取对远程 MBeanServerConnection 对象的引用。 请参阅
<host>和<httpsPort>与服务器匹配的示例:JMXServiceURL url = new JMXServiceURL("service:jmx:rest://<host>:<httpsPort>/IBMJMXConnectorREST"); JMXConnector jmxConnector = JMXConnectorFactory.connect(url, environment); MBeanServerConnection mbsc = jmxConnector.getMBeanServerConnection(); - 成功获取连接时, MBeanServerConnection 对象提供与来自 MBeanServer 对象的本地连接相同的功能和方法集。
有关 WebSphere®提供的 MBean 的更多信息,请参阅 Liberty 概要文件: 所提供 MBean 的列表。