上一章 目录 索引 下一章 |
Sun Java System Message Queue 3.5 SP1 管理指南

> ## 第 4 章
> 管理控制台教程

> 本教程重点介绍如何使用管理控制台—管理 Message Queue 消息服务器的图形界面。跟随本教程，您将学习如何进行以下操作：

> - 启动代理，使用控制台连接到代理并对其进行管理。
> - 在代理上创建物理目标。
> - 创建对象存储，并使用控制台连接到对象存储
> - 将被管理对象添加到对象存储

> 本教程旨在设置运行简单 JMS 兼容应用程序 HelloWorldMessageJNDI 所需的目标和被管理的对象，HelloWorldMessageJNDI 应用程序可以在示例应用程序 /demo 目录的 helloworld 子目录中找到（请参见附录 A“Message Queue 数据的位置”）。在本教程的最后一部分，您将运行此应用程序。

> 本教程主要用来指导您通过使用管理控制台来执行基本管理任务。即使了解了本教程，您还是需要仔细阅读《Message Queue Java Client Developer's Guide》或本《管理指南》的其他章节。

> 某些 Message Queue 管理任务无法使用图形工具来完成，您将需要使用命令行实用程序执行如下所示的这些任务：

> - 配置某些物理目标属性

> 某些物理目标属性无法使用管理控制台来配置。可以按照标题为“管理目标”的一节中的说明配置这些属性。

> - 创建代理群集

> 有关详细信息，请参见“使用群集（企业版）”。

> - 管理用户数据库

> 有关详细信息，请参见“验证用户”。

> ##

> 准备工作

> 必须安装 Message Queue 产品才能启动本教程。有关详细信息，请参见《Message Queue 安装指南》。请注意，本教程以 Windows 为中心，并为 UNIX® 用户添加了说明。

> 在本教程中，选择 "Item1" > "Item2" > "Item3" 表示您应该下拉名为 "Item1" 的菜单，从该菜单选择 "Item2"，然后从 "Item2" 提供的选择中选择 "Item3"。

> ##

> 启动管理控制台

> 管理控制台是您用于完成以下操作的图形工具：

> - 创建对代理的引用并连接到代理
> - 管理代理
> - 在代理上创建物理目标，代理将使用它来进行消息传送
> - 连接到放置 Message Queue 被管理对象的对象存储

> 被管理对象使您可以管理 JMS 兼容应用程序的消息传送需要。有关详细信息，请参见“Message Queue 受管理对象”。

> ##### 启动管理控制台

> 1. 选择“开始”>“程序”>“Sun Java System Message Queue 3.5 SP1 管理”。

> 显示控制台窗口之前，您可能需要等待几秒钟。

> 非 Windows 用户：在命令提示符下输入以下命令：

> /usr/bin/imqadmin （在 Solaris 操作系统上）

> /opt/imq/bin/imqadmin （在 Linux 操作系统上）

> 2. 请花几秒钟仔细观察一下控制台窗口。

> 控制台包括位于顶部的菜单栏、菜单栏下面的工具栏、左侧的浏览窗格、右侧的结果窗格（现在显示标识 Sun Java System Message Queue 产品的图形）和底部的状态窗格。

> 任何教程都不可能提供全部的信息，因此让我们首先找出如何获得管理控制台的帮助信息。

> ### 获得帮助

> 在菜单栏的最右侧找到Help菜单。

> ##### 显示管理控制台帮助信息

> 1. 下拉“Help”菜单并选择“Overview”。将显示一个帮助窗口。

> 请注意帮助信息是如何组织的。左侧的浏览窗格显示目录，右侧的结果窗格显示在浏览窗格中选择的任何项的内容。

> 观察“Help”窗口的结果窗格。它显示管理控制台的概貌，并标识了每个控制台窗格的用途。

> 2. 观察“Help”窗口的浏览窗格。它使用以下三个区域来组织主题：概述、对象存储管理和代理管理。其中每个区域都包含文件和文件夹。每个文件夹提供的是包含多个选项卡的对话框的帮助，每个文件则提供简单对话框或选项卡的帮助。

> 您的第一个控制台管理任务（请参见“添加代理”）将是通过控制台创建对所管理的代理的引用。但是，启动之前请查阅联机帮助以获得有关信息。

> 3. 单击“Help”窗口的浏览窗格中的“Add Broker”项。

> 您会发现结果窗格发生了变化。它现在包含一些文本，说明添加代理的含义并介绍“Add Broker”对话框中每个字段的使用。字段名称以粗体文本显示。

> 4. 仔细阅读帮助文本。
> 5. 关闭“Help”窗口。

> ##

> 使用代理

> 代理为 Message Queue 消息传送系统提供传送服务。消息传送的过程可分为两个阶段：首先将消息传送到代理上的物理目标，然后将其传送给一个或多个使用方客户机。

> 使用代理涉及以下任务：

> - 启动和配置代理

> 可以从 Windows 上的开始程序菜单或使用 imqbrokerd 命令启动代理。如果使用 imqbrokerd 命令，可以使用命令行选项指定代理配置信息。如果使用程序菜单，可以使用控制台和第 5 章“启动与配置代理”中说明的其他方法来指定配置信息。

> 注意 | 使用管理控制台无法启动代理实例。

> - 使用管理控制台或使用 Command 命令行实用程序 (imqcmd) 管理代理及其服务。
> - 创建客户机应用程序所需的物理目标
> - 监视资源使用以提高吞吐量和可靠性

> 代理支持与应用程序客户机和管理客户机之间的通信。它利用不同的连接服务实现此功能，并且您可以将代理配置为运行这些服务之一或全部运行。有关连接服务的详细信息，请参见“连接服务”。

> ### 启动代理

> 使用管理控制台无法启动代理。按照以下过程中的说明启动代理（另请参见第 5 章“启动与配置代理”）。

> ##### 启动代理

> 1. 选择“开始”>“程序”>“Sun Java System Message Queue 3.5 SP1 Message Broker”。

> 非 Windows 用户：输入以下命令启动代理。

> /usr/bin/imqbrokerd （在 Solaris 操作系统上）

> /opt/imq/bin/imqbrokerd （在 Linux 操作系统上）

> 显示出命令提示符窗口，表明代理就绪。

> 2. 现在让我们把注意力转回到“Administration Console”窗口。您现在可以将代理添加到控制台并连接到代理。

> 在管理控制台中添加对代理的引用之前不必启动代理，但是必须启动代理才能连接到它。

> ### 添加代理

> 添加代理在管理控制台中创建了一个对该代理的引用。添加代理之后，您就可以连接到它。

> ##### 将代理添加到管理控制台

> 1. 在浏览窗格的“Brokers”上单击右键并选择“Add Broker”。
> 2. 在“Broker Label”字段中输入 MyBroker。

> 这样便提供了一个在管理控制台中标识代理的标签。

> 注意，在对话框中已指定默认主机名 (localhost) 和默认主端口 (7676)。这些值是以后需要指定的值，即在您配置客户机用来建立与此代理的连接的连接工厂时需要指定这些值。

> 将“Password”字段保留为空。如果在连接时指定密码，则密码将会更安全。

> 3. 单击“OK”以添加代理。

> 观察浏览窗格。“Brokers”下方应已列出刚才添加的代理。代理图标上的红色 X 表示该代理当前未连接到控制台。

> 4. 在“MyBroker”上单击右键，并从弹出式菜单中选择“Properties”。

> 将显示代理属性对话框。可以使用此对话框更新添加代理时指定的任意属性。

> 5. 单击“Cancel”关闭对话框。

> ### 更改管理员密码

> 当连接到代理时，如果添加代理时未指定密码，系统将提示您指定密码。默认情况下，管理控制台可以作为用户 admin 并使用密码 admin 连接到代理。为了提高安全性，建议您在连接之前更改默认管理员密码 (admin)。

> ##### 更改管理员密码

> 1. 打开命令提示符窗口。如果窗口已打开，则请继续下一步操作。
> 2. 输入如下命令，并用自己的密码代替 abracadabra。然后，您指定的密码将代替 admin 的默认密码。

> imqusermgr update -u admin -p abracadabra

> 更改将立即生效。每当使用某个 Message Queue 命令行实用程序或管理控制台时，必须指定新密码。

> 尽管客户机使用不同于管理员的连接服务，但是也为您分配了默认用户名和密码，这样不必进行大量的管理设置便可以测试 Message Queue。默认情况下，客户机可以作为用户 guest 并使用密码 guest 连接到代理。但是，应尽快建立客户机的安全用户名和密码。有关详细信息，请参见“验证用户”。

> ### 连接到代理

> 1. 在 “MyBroker” 上单击右键并选择“Connect to Broker”。

> 将显示一个对话框，您可以在其中指定用户名和密码。

> 2. 在“Password”字段中输入 admin 或在更改管理员密码中指定的任何密码值。

> 指定用户名 admin 并提供正确密码将使您以管理员权限连接到代理。

> 3. 单击“OK”连接到代理。

> 连接到代理后，可以从“Actions”菜单中选择各个菜单项，以获得有关代理的信息、暂停和恢复代理、关闭和重新启动代理以及从代理断开连接。

> ### 查看连接服务

> 从代理提供的连接服务及其支持的物理目标可以区分代理。

> ##### 查看可用连接服务

> 1. 在浏览窗格中选择“Services”。

> 在结果窗格中列出了可用服务。对于每项服务，均提供了其名称、端口号和状态。

> 2. 单击结果窗格中的“jms”服务，以选中它。
> 3. 下拉“Actions”菜单并注意高亮显示的项。

> 您可以选择暂停 jms 服务或查看和更新其属性。

> 4. 从“Actions”菜单中选择“Properties”。

> 请注意，在“Service Properties”对话框中，您可以分配服务的静态端口号并可以更改分配给此服务的最小和最大线程数。

> 5. 单击“OK”或“Cancel”关闭“Properties”对话框。
> 6. 在结果窗格中选择“admin”服务。
> 7. 下拉“Actions”菜单。

> 您会注意到无法暂停此服务，暂停项已被禁用。admin 服务是指向代理的管理员链接。如果您暂停该服务，将再也无法访问代理。

> 8. 选择“Actions”>“Properties”查看 admin 服务的属性。
> 9. 完成时请单击“OK”或“Cancel”。

> ### 将物理目标添加到代理

> 默认情况下，为代理启用目标自动创建，这样就允许它动态地创建物理目标。因此，在开发环境中，您不必为了测试客户机代码而明确地创建目标。

> 不过，在生产设置中，建议您明确地创建物理目标。这使您（管理员）可以完全掌握代理上使用的目标。

> 您可以控制代理是否可以通过设置 imq.autocreate.topic 或 imq.autocreate.queue 属性来添加自动创建的目标。有关详细信息，请参见“自动创建的（与管理员创建的相对）目标”。

> 在本教程的这节中，您将把一个物理目标添加到代理。应注意分配给目标的名称，您以后会在创建对应此物理目标的被管理对象时需要此名称。

> ##### 将队列目标添加到代理

> 1. 在“MyBroker”的“Destinations”节点上单击右键并选择“Add Broker Destination”。

> 将显示以下对话框：

> 2. 在“Destination Name”字段中输入 MyQueueDest。
> 3. 选择“Queue”单选按钮（如果尚未选中此按钮）。
> 4. 单击“OK”添加物理目标。

> 现在，目标显示在结果窗格中。

> ### 使用物理目标

> 在代理上添加一个物理目标后，您可以按照稍后的步骤说明来执行以下任意一项任务：

> - 查看和更新物理目标的属性
> - 清除目标上的消息
> - 删除目标

> ##### 查看物理目标的属性

> 1. 选择“MyBroker”的“Destinations”节点。
> 2. 在结果窗格中选择“MyQueueDest”。
> 3. 选择“Actions”>“Properties”。

> 将显示以下对话框：

> 注意，对话框显示有关队列以及您可更改的某些属性的当前状态信息。

> 4. 单击“Cancel”关闭对话框。

> ##### 清除目标中的消息

> 1. 在结果窗格中选择物理目标。
> 2. 选择“ActionsPurge Messages”。

> 将显示一个确认对话框。

> 清除消息将删除消息，留下一个空目标。

> ##### 删除目标

> 1. 在结果窗格中选择物理目标。
> 2. 选择“EditDelete”。

> 将显示一个确认对话框。

> 注意 | 请不要删除 MyQueueDest 队列目标。

> 删除目标将清除该目标上的消息并删除目标。

> ### 获取有关主题目标的信息

> 代理主题目标属性对话框包含一个列出长期订阅的相关信息的附加选项卡。对于队列目标，该选项卡处于禁用状态。

> 使用此对话框可以执行以下操作：

> - 清除长期订阅，从而删除与长期订阅关联的所有消息
> - 删除长期订阅，从而清除与长期订阅关联的所有消息并删除该长期订阅

> ##

> 使用对象存储

> 对象存储可以是 LDAP 目录服务器或文件系统存储（文件系统中的目录），用于存储 Message Queue 被管理对象。这些被管理对象将封装有关客户机应用程序使用的对象的 Message Queue 特有实现方案和配置信息。

> 尽管可以在客户机代码中实例化和配置被管理对象，但建议您（管理员）最好创建和配置这些对象，并将其存储在对象存储中，客户机应用程序将通过 JNDI 访问该对象存储。这将使客户机代码与提供者无关。

> 有关被管理对象的详细信息，请参见“Message Queue 受管理对象”。

> 您不能使用管理控制台来创建对象存储。必须按照以下章节中的说明提前创建。

> ### 添加对象存储

> 添加对象存储将在管理控制台中创建一个对现有对象存储的引用。即使退出并重新启动控制台，此引用也将保留。

> ##### 添加文件系统对象存储

> 1. 如果在您的 C 驱动器上没有名为 Temp 的文件夹，那么现在就请创建这个文件夹。

> 本教程中使用的样例应用程序假定对象存储是 C 驱动器上一个名为 Temp 的文件夹。文件系统对象存储通常可以是任何驱动器上的任何目录。

> 非 Windows 用户：可以使用现有的 /tmp 目录（应该已经存在）。

> 2. 在“Object Stores”上单击右键并选择“Add Object Store”。

> 将显示以下对话框：

> 3. 在名为“ObjectStoreLabel”的字段中输入 MyObjectStore。

> 这仅是在管理控制台中提供一个对象存储显示的标签。

> 在以下步骤中，您将需要输入 JNDI 名称/值对。JMS 兼容应用程序使用这些名称/值对查找被管理对象。

> 4. 从“Name”下拉列表中，选择 java.naming.factory.initial。

> 此属性使您可以指定希望使用哪个 JNDI 服务提供者。例如，文件系统服务提供者或 LDAP 服务提供者。

> 5. 在“Value”字段中，输入以下内容

> com.sun.jndi.fscontext.RefFSContextFactory

> 这表示您将使用文件系统存储。（对于 LDAP 存储，将指定 com.sun.jndi.ldap.LdapCtxFactory。）

> 在生产环境中，您可能希望将 LDAP 目录服务器用作对象存储。有关设置服务器和进行 JNDI 查找的信息，请参见“LDAP 服务器对象存储库”。

> 6. 单击“Add”按钮。

> 您会注意到现在属性概要窗格中列出了属性及其值。

> 7. 从“Name”下拉列表中，选择 java.naming.provider.url。

> 此属性使您可以指定对象存储的确切位置。对于文件系统类型的对象存储，这将是现有目录的名称。

> 8. 在“Value”字段中，输入以下内容

> file:///C:/Temp（在 Solaris 和 Linux 操作系统上为 file:///tmp ）

> 9. 单击“Add”按钮。

> 您会注意到现在属性概要窗格中列出了属性及其值。如果正在使用 LDAP 服务器，还可能必须要指定验证信息。这对文件系统存储不是必需的。

> 10. 单击“OK”添加对象存储。
> 11. 如果未在浏览窗格中选中节点“MyObjectStore”，那么现在请选中它。

> 现在，管理控制台的显示如下所示：

> 浏览窗格中列出了该对象存储，结果窗格中则列出了对象存储的内容“Destinations”和“Connection Factories”。我们尚未将任何被管理对象添加到对象存储，如结果窗格的“Count”列中所示。

> 浏览窗格中的对象存储图标上绘制了一个红色的 X。这表示它处于断开连接的状态。需要先连接到对象存储，然后才能使用它。

> ### 检查对象存储属性

> 当管理控制台从对象存储断开连接时，可以查看和更改对象存储的某些属性。

> ##### 显示对象存储属性

> 1. 在浏览窗格的“MyObjectStore”上单击右键。
> 2. 从弹出式菜单中选择“Properties”。

> 将显示一个对话框，其中显示所有在添加对象存储时指定的属性。您可以更改这些属性中的任意属性，并单击“OK”更新旧信息。

> 3. 单击“OK”或“Cancel”关闭对话框。

> ### 连接到对象存储

> 必须先连接到对象存储，然后才能将对象添加其中。

> ##### 连接到对象存储

> 1. 在浏览窗格的“MyObjectStore”上单击右键。
> 2. 从弹出式菜单中选择“Connect to Object Store”。

> 您会注意到对象存储图标上的红色 X 不见了。现在可以将对象、连接工厂和目标添加到对象存储。

> ### 添加连接工厂被管理对象

> 可以使用管理控制台来创建和配置连接工厂。客户机代码使用连接工厂连接到代理。通过配置连接工厂，可以控制使用连接工厂创建的连接的行为。

> 有关配置连接工厂的信息，请参见联机帮助和《Message Queue Java Client Developer's Guide》。

> 注意 | 管理控制台仅列出和显示了 Message Queue 被管理对象。如果对象存储中包含与希望添加的被管理对象具有相同查找名称的非 Message Queue 对象，则您将在尝试执行添加操作时收到一条错误消息。

> ##### 将连接工厂添加到对象存储

> 1. 如果仍未连接，请连接到“MyObjectStore”（请参见“连接到对象存储”）
> 2. 在“Connection Factories”节点上单击右键，并选择“Add Connection Factory Object”。

> 将显示“Add Connection Factory Object”对话框。

> 3. 在“LookupName”字段中输入名称 “MyQueueConnectionFactory”。

> 这是客户机代码查找连接工厂时使用的名称，如 HelloWorldMessageJNDI.java 中的以下代码行所示：

> qcf=(javax.jms.QueueConnectionFactory)ctx.lookup(MyQueueConnectionFactory)

> 4. 从下拉菜单中选择“QueueConnectionFactory”以指定连接工厂的类型。
> 5. 单击“Connection Handling”选项卡。
> 6. 您通常会在“Message Server Address List”字段中输入客户机将连接的代理的地址。此字段的一个示例如下所示：

> mq://localhost:7676/jms

> 您不需要输入值，因为默认情况下已经将连接工厂配置为连接在端口 7676 的本地主机上运行的代理，这是教程示例所期望的配置。

> 7. 逐个单击此对话框的各个选项卡，查看您可以配置的连接工厂的信息类型。使用“Add Connection Factory Object”对话框右下角的Help按钮来获得有关各个选项卡的信息。目前请勿更改任何默认值。
> 8. 单击“OK”创建队列连接工厂。
> 9. 观察结果窗格。列出了新创建的连接工厂的查找名称和类型。

> ### 添加目标被管理对象

> 目标被管理对象与代理上的物理目标相关联。或者说，它们指向这些目标，使客户机可以查找并找到物理目标，而与命名和配置这些目标的提供者特有方法无关。

> 当客户机发送消息时，它将查找（或实例化）目标被管理对象，并在 JMS API 的 send() 方法中引用它。然后代理负责将消息传送给与该被管理对象相关联的物理目标。

> - 如果已创建与该被管理对象相关联的物理目标，则代理会将消息传送给该物理目标。
> - 如果尚未创建物理目标，并且物理目标的自动创建功能已启用，代理将自动创建物理目标并将消息传送给该目标。
> - 如果尚未创建物理目标，并且物理目标的自动创建功能已被禁用，代理将无法创建物理目标，也就无法传送消息。

> 在本教程的下一部分中，您将添加一个与前面添加的物理目标相对应的被管理对象。

> ##### 将目标添加到对象存储

> 1. 在浏览窗格中的“Destinations”节点（在 MyObjectStore 节点下）上单击右键。
> 2. 选择Add Destination Object。

> 管理控制台将显示一个“Add Destination Object”对话框，用于指定有关对象的信息。

> 3. 在“Lookup Name”字段中输入 “MyQueue”。

> JNDI 查找调用使用该查找名称来查找对象。在样例应用程序中，此调用如下所示：

> queue=(javax.jms.Queue)ctx.lookup(MyQueue);

> 4. 对于“Destination Type”，请选择“Queue”单选按钮。
> 5. 在“Destination Name”字段中输入 “MyQueueDest”。

> 这是您在代理上添加物理目标时指定的名称（请参见“将物理目标添加到代理”）。

> 6. 单击“OK”。
> 7. 在浏览窗格中选择“Destinations”，并注意在结果窗格中如何显示有关刚才添加的队列目标被管理对象的信息。

> ### 被管理对象的属性

> 要查看或更新被管理对象的属性，需要在浏览窗格中选择“Destinations”或“Connection Factories”，然后在结果窗格中选择特定对象，并选择“Actions”>“Properties”。

> ##### 查看或更新目标对象的属性

> 1. 在浏览窗格中选择“MyObjectStore”的“Destinations”节点。
> 2. 在结果窗格中选择“MyQueue”。
> 3. 选择“Actions”>“Properties”以查看“Destination Object Properties”对话框。

> 请注意，您仅能更改目标名称和说明的值。要更改查找名称，就必须先删除对象，然后添加一个命名为所需查找名称的新队列被管理对象。

> 4. 单击“Cancel”关闭对话框。

> ##

> 更新控制台信息

> 不管使用对象存储还是使用代理，都可以通过选择“View”>“Refresh”来更新任何元素或元素组的显示。

> ##

> 运行样例应用程序

> 提供样例应用程序 HelloWorldMessageJNDI 是为了在本教程中使用（其位置的相关信息，请参见下面的步骤 1）。它使用在前面的教程中创建的物理目标和被管理对象：名为 MyQueueDest 的队列物理目标、JNDI 查找名称分别为 MyQueueConnectionFactory 和 MyQueue 的队列连接工厂被管理对象和队列被管理对象。

> 代码创建简单的队列发件人和收件人，并发送和接收一条 Hello World 消息。

> ##### 运行 HelloWorldMessageJNDI 应用程序

> 1. 使包含 HelloWorldmessageJNDI 应用程序的目录成为当前目录，例如：

> cd IMQ_HOME\demo\helloworld\helloworldmessagejndi（在 Windows 操作系统上）

> cd /usr/demo/imq/helloworld/helloworldmessagejndi（在 Solaris 操作系统上）

> cd /opt/imq/demo/helloworld/helloworldmessagejndi（在 Linux 操作系统上）

> 您应查看 HelloWorldMessageJNDI.class 文件是否存在。（如果要更改该应用程序，需要使用《Message Queue C Client Developers Guide》的快速入门教程中用于编译客户机应用程序的指令对其重新编译。

> 2. 设置 CLASSPATH 变量以便包括含有 HelloWorldMessageJNDI.class 文件及 Message Queue 产品附带的以下 jar 文件的当前目录：jms.jar、imq.jar 和 fscontext.jar。有关设置 CLASSPATH 的说明，请参见《Message Queue Java Client Developer's Guide》。

> JNDI jar 文件 (jndi.jar) 是随 JDK 1.4 一起提供的。如果您使用的是该 JDK，则不必将 jndi.jar 添加到 CLASSPATH 设置。如果您使用的是 JDK 的早期版本，则必须将 jndi.jar 包含在 CLASSPATH 中。有关其他信息，请参见《Message Queue Java Client Developer's Guide》。

> 3. 运行应用程序之前，请打开源文件 HelloWorldMessageJNDI.java 并仔细阅读该源文件。虽然这个源文件很简短，但是其注释非常详细，您可以很清楚地了解该应用程序是如何使用您利用教程所创建的被管理对象和目标。
> 4. 通过执行以下命令之一来运行 HelloWorldMessageJNDI 应用程序：

> java HelloWorldMessageJNDI（在 Windows 操作系统上）

> % java HelloWorldMessageJNDI file:///tmp（在 Solaris 和 Linux 操作系统上）

> 如果应用程序成功运行，则会看到以下输出：

> java HelloWorldMessageJNDI
> Using file:///C:/Temp for Context.PROVIDER_URL
> Looking up Queue Connection Factory object with lookup name: MyQueueConnectionFactory
> Queue Connection Factory object found.
> Looking up Queue object with lookup name: MyQueue
> Queue object found.
> Creating connection to broker.
> Connection to broker created.
> Publishing a message to Queue: MyQueueDest
> Received the following message: Hello World

> 上一章 目录 索引 下一章

> 版权所有 2004 Sun Microsystems, Inc. 保留所有权利。