使用 JMX 管理资源和应用程序测验教程

免费下载在 Windows 上运行此教程所需的所有内容,其中包括:

如果您使用其他操作系统,请访问前提条件,获得指向各个下载的链接。

本教程讲述了如何编写 JMX 管理 Bean (MBean) 来为 J2EE Web 应用程序提供管理支持。该 Web 应用程序使用该 MBean 提供的属性值来控制它所显示数据的外观。Web 应用程序和 MBean 是通过所提供的 Application Server Control 管理控制台部署到 Oracle Containers for J2EE 10g (10.1.3) 环境的。

大约 1 小时

主题

本教程包括下列主题:

配置 Oracle Containers for J2EE (OC4J)
部署和测试 Web 应用程序

创建 MBean 管理接口

扩展 Web 应用程序以使用 MBean 的管理接口


将光标放在该图标上加载并查看本教程的所有屏幕截图。
警告:因为此操作会同时加载所有屏幕截图,所以响应速度可能会稍慢一些,具体情况取决于您的 Internet 连接。

注意:此外,还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。

概述

一个在 OC4J 实例中运行的 Web 应用程序查询和显示员工姓名和工资信息。本教程提供的步骤执行下列任务:

使用 Application Server Control 中的 JMX MBean 浏览器浏览在 OC4J 中运行的 MBean

开发一个 MBean,提供用于更改该 Web 应用程序所显示员数据的可视表示的属性。

将该 MBean 和修改后的 Web 应用程序部署到一个 OC4J 10g (10.1.3) 实例中

使用 Application Server Control 检查和设置 MBean 属性
使用 Application Server Control 在运行时应用了 MBean 属性值更改之后,执行该 Web 应用程序,查看更改后的外观。

返回主题列表

一个现有 Java Web 应用程序执行查询来检索员工的姓名和工资。起初,使用不带颜色的默认字体样式格式化这些数据。下面的网页演示了所呈现的信息:

该企业使用一个支持 JMX 功能的应用程序,它与一个称为 FormatMBean 的 MBean 连接。该 MBean 为管理员提供了一种动态更改下列属性来格式化显示在该 Web 应用程序页上的员工信息的途径:

SalaryColor:该字符串用于指定当工资值大于 SalaryThreshold 值时该工资值显示的颜色

SalaryThreshold:指定工资阈值的十进制值

SalarySymbol:设置货币符号字符的字符串
NameBold:布尔型值。如果设置为真,则使员工姓名以粗体样式显示。
NameItalic:布尔型值。如果设置为真,则会使员工姓名以斜体样式显示。
注意:NameBoldNameItalic 同时设置为真会使该姓名同时以粗体和斜体两种样式显示。
NameColor:指定用于显示员工姓名的颜色的字符串

这些 MBean 属性和操作在 OC4J 附带的 Application Server Control 管理控制台中提供给管理员。管理员使用 Application Server Control 检查和更改这些 MBean 属性。作为开发人员,您要使用 Oracle JDeveloper 执行下列任务:

开发 MBean 逻辑

创建企业档案 (EAR) 文件,该文件包含 Web 应用程序和相关的 MBean

作为管理员,您要:

使用 Application Server Control 部署该 EAR 文件

使用 Application Server Control 检查和更改该应用程序的 MBean 属性

使用 Application Server Control 更改了这些 MBean 属性之后,访问该 Web 应用程序页来执行员工数据查询和查看员工数据外观的变化。

返回主题列表

前提条件

开始讲述本教程之前,您应该已经完成了下列操作:

1.

Oracle JDeveloper 10g (10.1.3) 安装到了本地计算机目录中。

2.

Oracle Containers for J2EE 10g (10.1.3) 发布版本解压缩到了本地计算机目录中。

对于本教程的其他部分,此目录假定为 D:\oc4j1013

3.

下载了 jmxobe 工作区框架并将其解压缩到了本地计算机目录中。

对于本教程的其他部分,此目录假定为 D:\jmxobe

4.

Java 2 Software Development Kit 1.4.2 (JSDK) 安装到了主计算机中。PATH 系统环境变量应该包括 J2SDK 安装的 bin 子录。

注意:如果下载了完整的 JDeveloper 10.1.3 Windows 程序包,则其中已经包括了 JSDK。请将您的 PATH 设置为 [jdev_install_dir]\jdk\bin\

返回主题列表

配置 Oracle Application Server Containers for J2EE

要配置 OC4J 实例并创建该 Web 应用程序使用的数据源,请执行下列步骤:

1.

在命令窗口中,安装该 OC4J 示例并设置管理员口令:

cd \oc4j1013\j2ee\home
java -jar oc4j.jar -install

当提示输入口令时,请使用值 welcome

将光标放在该图标上可以查看该图像

2.

要在 D:\oc4j1013\j2ee\home 目录中启动该 OC4J 实例,请在命令窗口中输入下列命令:

java -jar oc4j.jar

将光标放在该图标上可以查看该图像

当命令窗口中出现类似下列内容的消息时,就可以使用该 OC4J 实例了:

05/01/06 15:45:21 Oracle Containers for J2EE 10g (10.1.3.0.0) - Developer Preview 3 initialized  

3.

要访问 Application Server Control,请启动一个浏览器窗口,并输入下列 URL:

http://localhost:1810

将光标放在该图标上可以查看该图像

4.

要登录 Application Server Control,请输入 User Name adminPassword welcome

单击 Login

成功登录时,将出现 Application Server Control OC4J:Home 页。

返回主题列表

部署和测试 Web 应用程序

已经为您提供了一个带有预置 Web 应用程序的项目框架。要部署和测试该 Web 应用程序,请执行下列步骤:

1.

启动 JDeveloper

2.

要在 JDeveloper 中打开初始 JMX 应用程序工作区,请选择 File > Open

3.

Open 对话框中,找到 D:\JDeveloper\JDev1012\jdev\mywork\jmxobe 目录。选择 jmxobe.jws

单击 Open

如果展开该 jmxobe 工作区,它则包含下面两个项目:

App,用于创建部署到该 Oracle Application Server Containers for J2EE (OC4J) 实例的 EAR 文件

WebApp,包含 Java Web 应用程序查询 EMP 表、格式化并显示员工姓名、编号和工的代码

4.

要创建用于部署的 EAR 文件,请在 Applications - Nagivator 窗格中展开 jmxobe > App > resources 节点。然后右键单击 jmxobeapp.deploy,然后选择 Deploy to EAR file

日志消息 Deployment 窗口显示该部署操作的结果。记住所创建的 EAR 文件的目录和文件名。

则创建了 EAR 文件 D:\jmxobe\App\deploy\jmxobeapp.ear

5.

返回显示 OC4J:Home 页并且可以看到 Administration 页的浏览器窗口:

单击 Applications 页链接。

6.

Applications 页上,单击 Deploy

7.

Deploy:Select Archive 页的 Archive 部分的 Archive Location 域中输入 D:\jmxobe\App\deploy\jmxobeapp.ear

注意:您可以单击 Browse 来导航并从文件系统目录中选择该 EAR 文件。

单击 Next

8.

Deploy:Application Attributes 页上,输入或选择下列域值:

Application Namejmxobeapp

Parent Applicationdefault

Bind Web Module to Sitehttp-web-site

单击 Next

9.

Deploy:Deployment Settings 页上,单击 Deploy

10.

等待部署过程成功完成:

单击 Return

11.

要运行最初的 Web 应用程序,请打开一个新的浏览器窗口,然后输入下列 URL:

http://localhost:8888/jmxobe/

单击 Query 链接。

12.

查询结果窗口显示下列数据:

注意:员工数据以普通格式显示,没有颜色。再次单击 Query 链接,返回同样的数据,外观没有变化。

返回主题列表

创建 MBean 管理接口

要创建 MBean 管理接口并扩展该 Web 应用程序,请执行以下步骤:

1.

在 JDeveloper Applications - Navigator 窗格中,右键单击 jmxobe 工作区节点:

将光标放在该图标上可以查看该图像

选择 New Project

2.

New Gallery 窗口中,从 Projects 类别中选择 Empty Project 项:

将光标放在该图标上可以查看该图像

单击 OK

3.

Create Project 对话框的 Project Name 域中输入 MBean

注意:DIrectory Name 域中的最后一个名称使用同样的项目名称。

单击 OK

4.

要设置 MBean 项目属性,请在 Applications - Navigator 中右键单击 MBean 节点:

选择 Project Properties

5.

Project Properties 窗口中,选择 Libraries 节点:

注意:不要关闭 Project Properties 窗口。

6.

单击 Add Jar... ,然后从 OC4J 目录树中选择 jmxri.jar 文件(提示:请看一下 j2ee\home\lib 子目录)

单击 Open

7.

JMX 库 jmxri.jar 此时出现在库列表中。

单击 OK 关闭 Project Properties 窗口。按 [Ctrl] + [S] 保存对该 MBean 项目的更改。

8.

要创建 FormatMBean 接口,请在 Applications - Navigator 中右键单击 MBean 节点:

单击 New

9.

New Gallery 窗口中,从 General 类别中选择 Java Interface 项:

单击 OK

10.

Create Java Interface 对话框中,输入下列域值:

NameFormatMBean

Packageoracle.obe.jmx.mbeans

单击 OK

11.

FormatMBean.java 页的 Source 页中,在 Java 接口的大括号内定义 FormatMBean 接口操作:

 // Salary attributes 
public void setSalaryColor(String color);
public String getSalaryColor();
public void setSalarySymbol(String symbol);
public String getSalarySymbol();
public void setSalaryThreshold(long threshold);
public long getSalaryThreshold();
 
// Name attributes 
public void setNameBold(boolean bold);
public boolean isNameBold();
public void setNameItalic(boolean italic);
public boolean isNameItalic();
public void setNameColor(String color);
public String getNameColor();

[Ctrl] + [S] 保存对该 FormatMBean.java 文件的更改。

12.

要创建实现 FormatMBean 接口的 Format MBean 类,请在 Applications - Navigator 中右键单击 MBean 节点。

单击 New

13.

New Gallery 窗口中,从 General 类别中选择 Java Class 项:

单击 OK

14.

Create Java Class 窗口中,输入下列域值:

NameFormat

Package: oracle.obe.jmx.mbeans

Extendsjava.lang.Object

单击 OK

15.

Format.java 文件在 Code Editor Source 页中处于打开状态,选择 Tools > Implement Interface

16.

Implement Interface 窗口中,展开 oracle > obe > jmx > mbeans 节点。选择 FormatMBean 接口:

单击 OK

17.

Format.java 源代码现在从它所实现接口中包含了下列类结构框架:

18.

Format.java MBean 类的 Source 页中,在该类的起始大括号后添加下列带有默认值的属性声明:

public class Format implements FormatMBean
{
  // Attributes of the MBean
private String salaryColor = "red";
private long salaryThreshold = 1500;
private String salarySymbol = "$";
private boolean nameBold = false;
private boolean nameItalic = false;
private String nameColor = "black";
  
public Format()
  {
  }
  
}    

19.

要实现 Format.java 方法的功能,请在 Source 页中修改代码,使之与下列 Java 源代码类似:

  
public Format()
  {
System.out.println("-->Format constructor");
  }

  /**
* Salary methods implementations 
   */
  public void setSalaryColor(String color)
  {
this.salaryColor = color;
  }

public String getSalaryColor()
  {
return salaryColor;
  }

public void setSalarySymbol(String symbol)
  {
this.salarySymbol = symbol;
  }

public String getSalarySymbol()
  {
return salarySymbol;
  }

public void setSalaryThreshold(long threshold)
  {
this.salaryThreshold = threshold;
  }

public long getSalaryThreshold()
  {
return salaryThreshold;
  }

  /**
* Name methods implementation 
   */
  public void setNameBold(boolean bold)
  {
this.nameBold = bold;
  }

public boolean isNameBold()
  {
return nameBold;
  }

public void setNameItalic(boolean italic)
  {
this.nameItalic = italic;
  }

public boolean isNameItalic()
  {
return nameItalic;
  }

public void setNameColor(String color)
  {
this.nameColor = color;
  }

public String getNameColor()
  {
return nameColor;
  }

选择 File > Save All 保存对 Format.java 文件和 MBean 项目的更改。

20.

要编译该 FormatMBean Java 接口和 Format MBean 类,请在 Applications - Navigator 中右键单击 MBean 项目节点:

选择 Make

21.

Messages - Log 窗口的 Messages 页中,确认该 Java 接口和 Java 类的编译成功后再继续。

编译错误消息(如果有的话)显示在 Compile 页上。这种情况下,请在源代码中更正这些错误,然后对该项目或文件选择 Make 选项。

返回主题列表

扩展 Web 应用程序以使用 MBean 的管理接口

要通过修改 QueryServlet 以使用 FormatMBean 管理接口来扩展该 Web 应用程序,请执行下列步骤:

1.

在 JDeveloper Applications - Navigator 中,右键单击 WebApp 节点:

将光标放在该图标上可以查看该图像

选择 Project Properties

2.

Project Properties 窗口中,选择 Dependencies 树节点。在 Project Dependencies 列表中选中 MBean.jpr 复选框:

将光标放在该图标上可以查看该图像

单击 OK

注意:不要关闭 Project Properties 窗口。

3.

Project Properties 窗口中,选择 Libraries,然后单击 Add Jar ...

在 OC4J 目录树中找到 jmxri.jar 文件:

单击 Open

4.

jmxri.jar 库添加到 Selected Libraries 中后,单击 OK 关闭 Project Properties 窗口:

[Ctrl] + [S] 保存对该项目的更改。

5.

在 JDeveloper Applications - Navigator 中,展开 WebApp > Application Sources > oracle.obe.jmx.webapp 节点。右键单击 QueryServlet.java

选择 Open

6.

要在 QueryServlet.javaCode Editor Source 页中使用该 JMX Format MBean,请在 import oracle.obe.jmx.webapp.formatters.*; 语句后添加下列 import 语句:

import javax.management.*;
import oracle.obe.jmx.mbeans.*;

7.

QueryServlet 类中,在 private InitialContext m_ic 声明之前声明下列实例变量:

  private static final String FORMATMBEAN_NAME = ":name=FormatMBean";

private MBeanServer m_MBeanServer = null;
private ObjectName m_FormatMBean = null;

8.

init() 方法中,要创建 MBeanServer 并动态注册该应用程序的 FormatMBean,请在创建了 InitialContext 对象之后添加下列代码行:

  // Create an MBeanServer and dynamically register 
// the FormatMBean for this application
m_MBeanServer = MBeanServerFactory.createMBeanServer();
m_FormatMBean = new ObjectName(FORMATMBEAN_NAME);
m_MBeanServer.registerMBean(new Format(),m_FormatMBean);

9.

getSalaryFormatter() 方法中,请在 return 语句前添加下列代码,以便从该 MBean 获取工资格式选项:

  try
  {
Long threshold = (Long)m_MBeanServer.getAttribute(m_FormatMBean,"SalaryThreshold");
String color = (String) m_MBeanServer.getAttribute(m_FormatMBean,"SalaryColor");
String symbol = (String) m_MBeanServer.getAttribute(m_FormatMBean,"SalarySymbol");

format.setColor(color);
format.setSymbol(symbol);
format.setThreshold(threshold.longValue());
  }
catch (Exception e)
  {
logException(e);
  }

10.

getNameFormatter() 方法中,请在 return 语句前添加下列代码,以便从该 MBean 获取姓名格式选项:


try
  {
Boolean italic = (Boolean) m_MBeanServer.getAttribute(m_FormatMBean,"NameItalic");
Boolean bold = (Boolean) m_MBeanServer.getAttribute(m_FormatMBean,"NameBold");
String color = (String) m_MBeanServer.getAttribute(m_FormatMBean,"NameColor");

format.setColor(color);
format.setBold(bold.booleanValue());
format.setItalic(italic.booleanValue());
  }
catch (Exception e)
  {
logException(e);
  }

11.

destroy() 方法中,添加下列代码以取消注册和释放该 MBean 实例:

  try
  {
m_MBeanServer.unregisterMBean(m_FormatMBean);
  }
catch (Exception e)
  {
logException(e);
  }

注意:[Ctrl]+[S] 保存对该 QueryServlet 源代码的更改。

12.

要编译 QueryServlet,请在 Applications - Navigator 中右键单击 QueryServlet 节点:

选择 Make

注意:输入 [Ctrl]+[Shift]+[F9] 编译所选的文件。检查 Messages - Log 窗口 Messages 页中的结果,看是否存在下列文本行,以确认编译是否成功:

Successful compilation:0 errors, 0 warnings.

消除任何编译错误,确保重新编译成功,然后再继续后面的步骤。

返回主题列表

使用 MBean 管理接口重新部署和测试 Web 应用程序

要使用 MBean 管理接口重新部署和测试该 Web 应用程序,请执行下列步骤:

1.

要为该 MBean 项目创建部署配置文件,请在 Applications - Navigator 中右键单击该 MBean 项目:

将光标放在该图标上可以查看该图像

选择 New

2.

New Gallery 中,展开 General 节点,然后选择 Deployment Profiles 类别。在 Items 中选择 JAR File

将光标放在该图标上可以查看该图像

单击 OK

3.

Create Deployement Profile - JAR File 对话框的 Deployment Profile Name 域中输入 FormatMBean

单击 OK

4.

JAR Deployement Profiles Properties 窗口中,单击 OK 接受默认设置:

选择 File > Save All 保存对 MBean 项目的所有更改。

5.

Applications - Navigator 中,展开 App > Resources 节点。右键单击 jmxobeapp.deploy

选择 Properties

6.

EAR Deployment Profile Properties 窗口中,选择 Application Assembly 节点。选中 J2EE Modules 部分 MBean.jpr 节点下面的 FormatMBean.deploy 复选框:

单击 OK。按 [Ctrl] + [S] 保存对该部署配置文件的更改。

7.

右键单击 jmxobeapp.deploy

选择 Deploy to EAR file

8.

在显示 OC4J:home 页的 Applications 页的浏览器窗口中,选择用于 jmxobeapp 应用程序的选项:

单击 Undeploy

9.

Undeploy Application 页中,单击 Yes

10.

在显示已经成功取消部署 jmxobeappConfirmation 页上,单击 Return

11.

OC4J:home 页的 Administration 页上,单击 Deploy

12.

Deploy:Select Archive 页的 Archive Location 域中,输入 D:\jmxobe\App\deploy\jmxobeapp.ear

注意:您可以单击 Browse 来找到并从文件系统目录中选择该 EAR 文件。

单击 Next

13.

Deploy:Application Attributes 页中,输入或选择下列域值:

Application Namejmxobeapp

Parent Applicationdefault

Bind Web Module to Sitehttp-web-site

单击 Next

14.

Deploy:Deployment Settings 页上,单击 Deploy

15.

等待出现 Confirmation 页,表明部署已经成功:

单击 Return

16.

要运行更新的 Web 应用程序,请打开一个新的浏览器窗口,然后输入下列 URL:

http://localhost:8888/jmxobe/

单击 Query 链接。

17.

此时显示下列查询响应页:

注意:NameSalary 列中的值应用了默认的格式。但是单击 Query 链接会启动 QueryServlet,该 Servlet 会在 Application Server J2EE container 中注册该 FormatMBean 实例。通过使用 OC4J 管理界面可以更改 FormatMBean 的属性,从而使得该 Web 应用程序显示的数据产生可视格式变化。

18.

在显示 OC4J:homeApplications 页的浏览器窗口中,单击 jmxobeapp 链接:

19.

Application:jmxobeapp 页上,Home 页显示该特定已部署 Web 应用程序的详细信息:

单击 Related Links 标头下面的 Application Defined MBeans 链接。

20.

Application MBeans 页上,值 jmxobeapp:name=FormatMBean 出现在 Name 列中:

单击 jmxobeapp:name=FormatMBean 链接。

21.

MBean:jmxobeapp:name=FormatMBean 页的 Attributes 选项卡页中,更改下列属性值:

SalaryColormagenta

SalaryThreshold2000

NameBoldtrue
NameColorpurple

单击 Apply Changes

注意:显示的 MBean:jmxobeapp:name=FormatMBean 页包含一个 Information 部分,其中包含下列消息:

Attributes has been updated successfully.

22.

返回运行该 Web 应用程序的浏览器窗口,其中包含了 Employees 数据页:

单击页底部的 Query 链接,重新查询员工数据。

23.

在结果 Employees 网页上,已经应用了下列格式更改:

Name 列以紫色粗体显示员工姓名。

Salary 列以洋红显示超过 $2,000 的工资。

注意:QueryServlet 已经应用了在 MBean:jmxobeapp:name=FormatMBean 管理网页上应用于属性的更改。此过程显示了管理员如何使用该 JMX MBean 来设置或获取一个设计用于与该 MBean 进行交互的应用程序的信息。

返回主题列表

在本课程中,您学习了如何执行下列任务:

安装和使用 Oracle Containers for J2EE 10g (10.1.3)。

使用 Application Server Control 管理控制台浏览 OC4J MBean

扩展 Web 应用程序,以使用 JMX MBean 获取用于应用程序数据可视表示的设置。

使用 Application Server Control 修改 Web 应用程序 MBean 属性。

部署和测试 Web 应用程序及其 MBean 管理接口。

返回主题列表

要了解有关 Oracle Containers for J2EE 的更多信息,请参见 Oracle OTN 产品页。

有关 JMX 的信息,请参见 Sun Developer Network 网站上的 Java 管理扩展

有关本 OBE 教程的问题,请在 OBE 论坛上提问。

返回主题列表

将光标置于该图标上,以隐藏所有屏幕截图。