Sun ONE logo     上一个      目录      索引      下一个     
Sun ONE Message Queue, Version 3.0.1 管理员指南



附录 A   设置插入的持久性

本附录说明如何设置代理,使之使用插入的持久性访问支持 JDBC 的数据存储。

简介

Sun™ ONE Message Queue (MQ) 代理包含一个持久性管理器组件(请参阅持久性管理器),用于管理持久性信息的写入和检索。默认情况下,持久性管理器被配置为访问基于文件的内置数据存储,但是您可以重新对其进行配置,以插入任何可通过 JDBC 兼容的驱动程序进行访问的数据存储。

要配置代理以使用插入的持久性,需要在代理实例配置文件中设置一些 JDBC 相关的属性。还需要创建相应的数据库架构以执行 MQ 持久性操作。MQ 提供的数据库管理器实用程序 (imqdbmgr) 可以使用 JDBC 驱动程序和代理配置属性创建和管理插入的数据库。

本附录中列出的步骤以 Java 2 SDK Enterprise Edition 附带的 Cloudscape DBMS 为例进行说明(J2EE SDK 可以从 java.sun.com 下载)。本实例使用 Cloudscape 的嵌入式版本(而不是客户机/服务器版本)。这些步骤以 Cloudscape 实例中的路径名和属性名为例进行说明。它们标有“实例:”字样。

其它实例可以从以下地址找到:

IMQ_HOME/demo/jdbc(在 Solaris 操作系统上为 /usr/demo/imq/jdbc

插入支持 JDBC 的数据存储

插入支持 JDBC 的数据存储只需几个步骤。

插入支持 JDBC 的数据存储的步骤

  1. 在代理的配置文件中设置 JDBC 相关属性。
  2. 请参阅表 A-1 中列出的属性。

  3. 在以下路径中放置一个 JDBC 驱动程序 jar 文件的副本或符号链接:
  4. IMQ_VARHOME/lib/ext(在 Solaris 操作系统上为 /usr/share/lib/imq/ext/

    副本实例 (Solaris):

    % cp j2sdk_install_directory/lib/cloudscape/cloudscape.jar IMQ_VARHOME/lib/ext

    符号链接实例 (Solaris):

    % ln -s j2sdk_install_directory/lib/cloudscape/cloudscape.jar IMQ_VARHOME/lib/ext

  5. 创建 MQ 持久性所需的数据库架构。
  6. 使用 imqdbmgr create all 命令(对于嵌入式数据库)或者 imqdbmgr create tbl 命令(对于外部数据库)。请参阅数据库管理器实用程序 (imqdbmgr)

    实例:

    % cd IMQ_HOME/bin(在 Solaris 操作系统上为 /usr/bin

    % imqdbmgr create all



如果使用嵌入式数据库,建议在以下目录中创建数据库架构:

IMQ_VARHOME/instances/brokerName/dbstore/dabatabseName.
(在 Solaris 操作系统上为 /var/imq/instances/brokerName/dbstore/

如果嵌入式数据库没有设置用户名和密码保护,则可能设置了文件系统权限保护。要确保代理能够对数据库进行读写操作,运行该代理的用户应该是使用 imqdbmgr 命令创建该嵌入式数据库的同一个用户(请参阅数据库管理器实用程序 (imqdbmgr))。



JDBC 相关的代理配置属性

代理的实例配置文件位于以下位置:

IMQ_VARHOME/instances/brokerName/props/config.properties
(在 Solaris 操作系统上为 /var/imq/instances/brokerName/props/config.properties

如果该文件尚未创建,必须使用 -name 代理名称选项启动 MQ 的代理,以创建该文件。

表 A-1 列出了插入支持 JDBC 的数据存储时需要设置的配置属性。这些属性是在使用插入持久性的每个代理实例的实例配置文件 (config.properties) 中设置的。该表包含了需要为 Cloudscape DBMS 实例指定的值。

表 A-1    JDBC 相关属性 

属性名称

说明

imq.persist.store
 

指定基于文件或基于 JDBC 的数据存储。

实例:

jdbc
 
imq.persist.jdbc.brokerid
(可选)

 

指定附加到数据库表名称中的代理实例标识符。当多个代理实例使用同一个数据库作为持久性数据存储时,标识符可使代理实例保持唯一。(嵌入式数据库只存储一个代理实例的数据,因此通常不需要代理实例标识符。)标识符必须是字母数字字符串,其长度不能超过数据库所允许的最大表名长度减去 12 后的长度。

实例:对于 Cloudscape 来说不需要

 
imq.persist.jdbc.driver
 

指定连接到数据库的 JDBC 驱动程序的 Java 类名。

实例:

COM.cloudscape.core.JDBCDriver
 
imq.persist.jdbc.opendburl
 

指定打开现有数据库连接的数据库 URL。

实例:

jdbc:cloudscape:IMQ_VARHOME/
instances/brokerName/dbstore/imqdb

(在 Solaris 操作系统上为 jdbc:cloudscape:var/imq...)

 
imq.persist.jdbc.createdburl
(可选)

 

指定打开创建数据库连接的数据库 URL。(仅当要使用 imqdbmgr 创建数据库时指定。)

实例:

jdbc:cloudscape:IMQ_VARHOME/
instances/brokerName/dbstore/
imqdb;create=true

(在 Solaris 操作系统上为 jdbc:cloudscape:var/imq...)

 
imq.persist.jdbc.closedburl
(可选)

 

指定当代理关闭时关闭当前数据库连接的数据库 URL。

实例(对 Cloudscape 来说是必需的):

jdbc:cloudscape:;shutdown=true
 
imq.persist.jdbc.user
(可选)

 

指定打开数据库连接的用户名(如果需要)。出于安全性考虑,可以指定值,而不要使用命令行选项:
imqbrokerd -dbuser
imqdbmgr -u

 
imq.persist.jdbc.needpassword
(可选)

 

指定数据库是否要求为代理访问提供密码。如果值为 true,则表示需要提供密码。可以使用以下命令行选项指定密码:imqbrokerd -dbpassword
imqdbmgr -p

如果没有使用命令行选项或密码文件提供密码(请参阅使用密码文件),代理将提示输入密码。

 
imq.persist.jdbc.password
(可选)

 

指定用于打开数据库连接的密码(如果需要)。只能在密码文件中指定(请参阅使用密码文件)。为了增强安全性,最好让代理提示您输入密码,或使用以下命令行选项指定密码:
imqbrokerd -dbpassword
imqdbmgr -p

 

所有代理配置属性的值都可以使用 -D 命令行选项进行设置。如果某个数据库要求设置某些特定的数据库属性,也可以在启动代理 (imqbrokerd) 时使用 -D 命令行选项进行设置,或者使用数据库管理器实用程序 (imqdbmgr) 进行设置。

实例:

以 Cloudscape 嵌入式数据库为例,可以使用 -D 命令行选项定义 Cloudscape 系统目录,而不是在数据库连接 URL 中指定数据库的绝对路径(如表 A-1 中的实例所示):

-Dcloudscape.system.home=IMQ_VARHOME/instances/brokerName/dbstore

在这种情况下,可以分别将用于创建和打开数据库的 URL 简单指定为:

imq.persist.jdbc.createdburl=jdbc:cloudscape:imqdb;create=true

imq.persist.jdbc.opendburl=jdbc:cloudscape:imqdb

数据库管理器实用程序 (imqdbmgr)

MQ 为设置持久性所需的架构提供了数据库管理器实用程序 (imqdbmgr)。当 MQ 数据库表被损坏或者您希望使用不同的数据库作为数据存储时,也可以使用该实用程序删除数据库表。



如果代理实例异常崩溃,未引用的持久性信息可能会保留在数据存储中。启动代理后再将其关闭通常可以清除数据存储。



本节介绍了基本的 imqdbmgr 命令语法,提供了一个子命令列表,并概述了 imqdbmgr 命令选项。

命令语法

imqdbmgr 命令的一般语法如下:

imqdbmgr subcommand argument [options]
imqdbmgr -h|-help
imqdbmgr -v|-version

请注意,如果指定 -v 或 -h 选项,将不会执行命令行中指定的子命令。例如,输入以下命令将显示版本信息,而不是执行 create 子命令。

imqdbmgr create all -v

imqdbmgr 子命令

表 A-2 列出了数据库管理器实用程序 (imqdbmgr) 包含的子命令:

表 A-2    imqdbmgr 子命令 

子命令
和参数

说明

create all
 

创建一个新的数据库和 MQ 持久性存储器架构。此命令用于嵌入式数据库系统,使用时需指定 imq.persist.jdbc.createdburl 属性。

 
create tbl
 

在现有数据库系统中创建 MQ 持久性存储器架构。此命令用于外部数据库系统。

 
delete tbl
 

删除当前持久性存储器数据库中的现有 MQ 数据库表。

 
recreate tbl
 

删除当前持久性存储器数据库中的现有 MQ 数据库表,然后重新创建 MQ 持久性存储器架构。

 

imqdbmgr 命令选项概述

表 A-3 列出了 imqdbmgr 命令的选项。

表 A-3    imqdbmgr 选项

选项

说明

-Dproperty=value
 

将指定属性设置为指定的值。

 
-b brokerName
 

指定代理实例名称并使用对应的实例配置文件。

 
-h
 

显示使用帮助。不执行命令行上的命令。

 
-p password
 

指定数据库密码。

 
-u name
 

指定数据库用户名。

 
-v
 

显示版本信息。不执行命令行上的命令。

 


上一个      目录      索引      下一个     
版权所有 2002 Sun Microsystems, Inc.。保留所有权利。


部件号 817-5020-10