使用多个 Java Platform Enterprise Edition 应用程序服务器来部署并管理定制 Java 管理客户机程序

本部分描述如何连接到 Java™ Platform, Enterprise Edition (Java EE) 服务器以及如何管理多个供应商服务器。

开始之前

产品完全实现 Java EE 管理规范,此规范也称为 JSR-77(Java 规范请求 77)。但是,当您开发 Java 管理客户机程序以管理多个供应商服务器时,了解 Java EE 规范和 WebSphere® Application Server 实现之间的某些细节上的区别是重要的。有关信息,请参阅 Java Platform, Enterprise Edition (Java EE) 管理规范和 MBean Java 应用程序编程接口 (API) 文档。 在此信息中心中,单击引用 > MBean 接口

关于此任务

管理客户机程序以独占方式访问 WebSphere Application Server 时,可使用 Java API 和 WebSphere Application Server 定义的 MBean 来对其进行管理。如果程序需要访问 WebSphere Application Server 和其他 Java EE 服务器,那么使用 Java EE 管理规范中定义的 API。

过程

  1. 连接到 Java EE 服务器。
    通过从 Java 命名和目录接口 (JNDI) 查找管理企业 Bean 来连接到服务器。管理企业 Bean 将远程接口提供给运行在应用程序服务器中的 MBean Server。管理企业 Bean 的功能与 WebSphere Application Server 管理客户机的功能几乎完全一样,只是它不提供特定于 WebSphere Application Server 的功能。以下示例显示了查询管理企业 Bean 的方法。
    import javax.management.j2ee.ManagementHome;
    import javax.management.j2ee.Management;
    
    Properties props = new Properties();
    
    props.setProperty(Context.PROVIDER_URL, "iiop://myhost:2809");
    Context ic = new InitialContext(props);
    Object obj = ic.lookup("ejb/mgmt/MEJB");
    ManagementHome mejbHome = (ManagementHome)
            PortableRemoteObject.narrow(obj, ManagementHome.class);
    Management mejb = mejbHome.create();
    此示例通过传递远程方法调用 (RMI) 连接器的主机和端口来获取应用程序服务器的初始上下文。您必须明确对 RMI 端口进行编码,现在的情况中为 2809。查询方法会查找 ejb/mgmt/MEJB 路径,这是管理企业 Bean 主页的位置。然后,此示例会创建您在下一步要使用的 mejb 无状态会话 bean。
  2. 管理多个供应商应用程序服务器。

    在创建 mejb 无状态会话 bean 后,您可使用它管理您的应用程序服务器。应用程序服务器的组件显示为 MBean,这是规范定义的。这些 MBean 都具有 j2eeType 属性。此属性是规范定义的某个类型集合。所有这些类型都具有列出的属性集。

    使用以下示例指导您管理多个供应商应用程序服务器。 此示例使用 Java 虚拟机 (JVM) MBean 来确定用于应用程序服务器的当前堆大小。

    ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
    Set s = mejb.queryNames(jvmQuery, null);
    ObjectName jvmMBean = (ObjectName) s.iterator().next();
    boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,
            "statisticsProvider")).booleanValue();
    if (hasStats) {
        JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,
                                                      "stats");
        String[] statisticNames = stats.getStatisticNames();
        if (Arrays.asList(statisticNames).contains("heapSize")) {
            System.out.println("Heap size: " + stats.getHeapSize());
        }
    }

    queryNames() 方法首先查询 JVM MBean。getAttribute 方法会获取 statisticsProvider 属性,并确定此 MBean 是否提供统计信息。如果此 MBean 提供统计信息,那么该示例访问统计信息属性,然后调用 getHeapSize() 方法以获取堆大小。

结果

此示例的优点在于它可以在任何供应商应用程序服务器上运行。它证明 MBean 可随意实现定义的接口,当前情况下为 StatisticsProvider 接口。如果 MBean 实现 StatisticsProvider 接口,您可查看应用程序服务器是否支持特定统计信息,当前情况下为堆大小。尽管该值是可选的,规范仍然会定义堆大小。如果应用程序服务器支持堆大小,您可为 JVM 显示堆大小。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_multappsrv_conn
文件名:tjmx_multappsrv_conn.html