本部分描述如何连接到 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) 文档。
在此信息中心中,单击。
关于此任务
管理客户机程序以独占方式访问 WebSphere Application Server 时,可使用 Java API 和 WebSphere Application Server 定义的 MBean 来对其进行管理。如果程序需要访问 WebSphere Application Server 和其他 Java EE 服务器,那么使用 Java EE 管理规范中定义的 API。
过程
- 连接到 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。
- 管理多个供应商应用程序服务器。
在创建 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 显示堆大小。