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 来监视应用程序

  1. 首先,必须获取对 MBeanServer的引用。 此示例查找 JvmStats MBean ,并使用 findMBeanServer 方法来检查向哪个服务器注册了 MBean 。 然后,引用正确的 MBeanServer 对象,可以获取对 MBean 的引用,并从其公开的属性中获取数据。 此示例查找 JvmStats MBeanUpTime 属性。
    // 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 的引用。

  1. 通过 REST 连接器访问的所有 JMX MBean 都受名为 administrator的单个 JEE 角色保护。 要提供对此角色的访问权,请编辑 server.xml 并将已认证的用户添加到管理员角色。
    <administrator-role>
    <user>myuserid</user>
    <group>group1</group>
    </administrator-role>
    有关使用 JEE 角色的更多信息,请参阅 使用 EJBROLE 配置 SAF 授权
  2. 远程 RESTful JMX 客户机必须使用 SSL 访问 Liberty JVM 服务器。 要为 Liberty JVM 服务器配置 SSL 支持,请参阅主题 使用 RACF为 Liberty JVM 服务器配置 TLS。 此外, JMX 客户机需要访问 restConnector 客户机端 JAR 文件和包含服务器签名证书的 TLS 客户机密钥库。 restConnector.jar 是 CICS® WLP 安装的一部分,可从 &USSHOME;/wlp/clients获取。
  3. 在客户机端代码中,需要创建 JMXServiceURL 对象。 这样您就可以获得 MBeanServerConnection的引用。 请参阅 <host><httpsPort> 与服务器匹配的示例:
    JMXServiceURL url = new JMXServiceURL("service:jmx:rest://<host>:<httpsPort>/IBMJMXConnectorREST");
    JMXConnector jmxConnector = JMXConnectorFactory.connect(url, environment);
    MBeanServerConnection mbsc = jmxConnector.getMBeanServerConnection();
  4. 当您成功建立连接后, MBeanServerConnection将提供 MBeanServer本地连接相同的功能和一组方法。

有关 WebSphere®提供的 MBean 的更多信息,请参阅 WebSphere Liberty: 提供的 MBean 列表