• 沒有找到結果。

创建运行环境

在文檔中 精通 WebSphere Message Broker (頁 164-167)

业务整合

4.1 创建运行环境

在介绍概念时我们提到 WebSphere Message Broker 运行环境中含有三个组件:代理、配置 管理器、用户名服务器。其中代理和配置管理器都需要相应的数据库和队列管理器支撑,两者 可以建立在同一个队列管理器之上。我们假定代理名为 WBRK,对应的数据库为 WBRKDB,

队列管理器为 WBRKQM。配置管理器采用缺省名为 ConfigMgr,它的数据库缺省名为 BERNARD,且与代理共享队列管理器 WBRKQM。一个简单的运行环境如图 4-1 所示。

图 4-1 一个简单的运行环境

4.1.1 选择用户

首先,在 Windows 中执行 WMB 命令创建各组件的用户也必须具有 Administrators 组用户 权限。其次,Windows 中 WMB 的各个组件都以服务方式运行,所以要选择一个同时属于 mqbrkrs 和 mqm 组用户或者属于 Administrators 组用户来运行该组件,该用户标识也称为组件 的服务用户标识(ServiceUserId)。另外,访问队列管理器和数据库也需要合适的用户及权限。

为了简单起见,我们可以沿用第 2 章中安装时的 Administrators 组用户登录并创建运行环 境,并将其赋予各个组件的 ServiceUserId。我们在这里假定用户名为 demo,密码为 demo4me,

它属于 Administrators 组。由于在第 2 章中以该用户身份登录并执行了 WMB 的安装全过程,

故该用户也属于 mqbrkrs 和 mqm 组。再以该用户创建队列管理器和数据库,所以它也应该拥 有相关的全部访问权限。

执行 WebSphere Message Broker 命令行需要命令窗口环境,可以在 WMB 程序组中的“命 令控制台”中运行 WMB 控制命令,也可以在普通命令行窗口中执行 mqsiprofile.cmd 使其具

有 WMB 命令窗口环境,然后再执行各种控制命令。例如:

C:\>c:\mqsi\6.0\bin\mqsiprofile.cmd C:\>mqsilist

4.1.2 创建队列管理器

然后,让我们来创建并启动队列管理器 WBRKQM,配置并启动其中的 TCP/IP 1414 端口 侦听器 L。可以用 dspmq 和 netstat 命令检查队列管理器和侦听器的运行状态。

C:\>crtmqm WBRKQM C:\>strmqm WBRKQM C:\>runmqsc WBRKQM

define listener(L)trptype(TCP)port(1414)control(QMGR) start listener(L)

end C:\>dspmq

QMNAME(WBRKQM) STATUS(正在运行)

C:\>netstat -an

TCP 0.0.0.0:1414 0.0.0.0:0 LISTENING 4.1.3 创建数据库

接着,让我们来创建数据库 WBRKDB。这里假定代理使用的是轻量级数据库 Derby,在 第一次创建 Derby 数据库时需要指定数据库网络服务器引擎的管理员用户及端口(缺省为 1527)。在以后再次创建其他 Derby 数据库时可以复用同一个网络服务器,而无需指定用户名、

密码、端口等信息。创建成功后,可以用 mqsilist 命令来查看当前的 WMB 组件,可以看到网 络服务器实例(DatabaseInstanceMgr6)。

C:\>mqsicreatedb WBRKDB -i demo -a demo4me -p 1527 -e Derby BIP9824I: 正在创建 DatabaseInstanceMgr Service 组件。

BIP9832I: 正在启动 DatabaseInstanceMgr Service 组件。

BIP9828I: 正在连接到端口 1527 上的 Cloudscape Network Server。

BIP9809I: 正在创建 Derby 数据库“WBRKDB”,这可能要花一段时间。

BIP9829I: 正在对 Derby 数据库“WBRKDB”进行分类。

BIP9818I: 使用 IBM Cloudscape/Apache Derby 创建“WBRKDB”数据库。

C:\>mqsilist

BIP8099I: DbInstMgr: DatabaseInstanceMgr6 -

我们可以在 Windows 本地服务中看到自动增添并启动的服务条目 IBM WebSphere Message Broker component DatabaseInstanceMgr6,还可以在系统 ODBC 数据源中观察到自动添加的 WBRKDB 数据源。具体的Derby 数据库WBRKDB 创建在<MQSI_Runtime_Dir>\common\dbinstmgr 目录下。

创建数据库时,需要注意:

(1)Derby 数据库共享一个网络服务器,所以无论用 mqsicreatedb 创建多少个 Derby 数 据库,用 mqsilist 都只能观察到一个实例。Derby 数据库可以用 mqsideletedb 删除,当网络 服务器中的最后一个 Derby 数据库都被删除后,DatabaseInstanceMgr6 服务也会随之被停止 并删除。

(2)如果使用的是商用数据库(如 DB2、Oracle 等),则用相应的命令创建数据库。例 如,DB2 数据库的创建命令为:C:\>db2 "create db WBRKDB"

4.1.4 创建配置管理器

有了前面创建的队列管理器,我们便可以创建配置管理器了,在 mqsicreateconfigmgr 命 令中需要指定 ServiceUserId 及相关的队列管理器名,在 Windows 中可以不必指定配置管理器 名,缺省为 ConfigMgr。创建成功后,可以用 mqsilist 命令来查看当前的 WMB 组件,可以看 到配置管理器(ConfigMgr)。我们可以用 mqsistart 命令将其启动,也可以在 Windows 的服务 中用图形管理界面启动。

C:\>mqsicreateconfigmgr -i demo -a demo4me -q WBRKQM C:\>mqsilist

BIP8099I: ConfigMgr: ConfigMgr - WBRKQM BIP8099I: DbInstMgr: DatabaseInstanceMgr6 - C:\>mqsistart ConfigMgr

我们可以在 Windows 本地服务中看到自动增添的服务条目 IBM WebSphere Message Broker component ConfigMgr。ConfigMgr 相关的数据库是一个以 Derby 内置方式运行的数据 库,名为 BERNARD,不由网络服务器实例(DatabaseInstanceMgr6)管理,数据库实体创建 在<MQSI_Runtime_Dir>\components\ConfigMgr 目录下。

4.1.5 创建代理

创建代理的命令 mqsicreatebroker 语法上类似于创建配置管理器的命令,在命令中需要指 定代理名(WBRK)、ServiceUserId 以及前面创建的队列管理器名和数据库名。创建成功后,

可以用 mqsilist 命令来查看当前的 WMB 组件,可以看到代理(WBRK)。我们可以在 Windows 本地服务中看到自动增添的服务条目 IBM WebSphere Message Broker component WBRK,可以 用 mqsistart 命令将其启动,也可以在 Windows 的服务中用图形管理界面启动。

C:\>mqsicreatebroker WBRK -i demo -a demo4me -q WBRKQM -n WBRKDB C:\>mqsilist

BIP8099I: ConfigMgr: ConfigMgr - WBRKQM BIP8099I: DbInstMgr: DatabaseInstanceMgr6 - BIP8099I: Broker: WBRK - WBRKQM C:\>mqsistart WBRK

4.1.6 查看组件数据库

前面创建组件的过程中创建了 Derby 数据库 BERNARD 和 WBRKDB,可以用 Derby 的命 令行工具 ij 来查看数据库中的内容。由于 BERNARD 数据库是由配置管理器独占的,以 Derby 内置方式运行,所以要访问 BERNARD 数据库,则首先要停止配置管理器的运行,并且将当 前目录移至 BERNARD 所在路径。WBRKDB 数据库则是由 Derby 网络服务器管理,可以并行 访问,无须停止 WBRK 代理。

连接 BERNARD 数据库。

C:\>mqsistop ConfigMgr

cd C:\Documents and Settings\All Users\Application Data\IBM\MQSI\components\ConfigMgr set CLASSPATH=C:\MQSI\6.0\classes\derby.jar;

C:\MQSI\6.0\classes\derbytools.jar;%CLASSPATH%

java -Dij.driver=org.apache.derby.jdbc.EmbeddedDriver -Dij.protocol=jdbc:derby: org.apache.derby.tools.ij ij> connect 'BERNARD';

连接 WBRKDB 数据库。

set CLASSPATH=C:\MQSI\6.0\classes\db2jcc.jar;

C:\MQSI\6.0\classes\db2jcc_license_c.jar;

C:\MQSI\6.0\classes\derbynet.jar;

C:\MQSI\6.0\classes\derbytools.jar;%CLASSPATH%

java -Dij.user=demo -Dij.password=demo4me -Dij.driver=com.ibm.db2.jcc.DB2Driver -Dij.protocol=jdbc:derby:net://

localhost:1527/ org.apache.derby.tools.ij ij> connect 'WBRKDB';

Derby 数据库是一个纯 Java 的数据库,可以执行标准的 SQL-92 操作。在 ij 工具中可以直 接使用 SQL 来访问数据库,所有的 ij 命令以分号“;”结束。

列出数据库中所有的 schema 名。

select CHAR(schemaname, 20)schema_name, CHAR(authorizationid, 20)authorization_id from sys.sysschemas;

列出数据库中所有的表名。

select CHAR(schemaname, 20)schema_name, CHAR(tablename, 20)table_name, CHAR(tabletype, 10)

table_type

from sys.systables TABLES, sys.sysschemas SCHEMAS where TABLES.schemaid = SCHEMAS.schemaid;

查看指定表的结构。

select CHAR(tablename, 20)table_name, CHAR(columnname, 20)column_name, CHAR(columndatatype, 55)column_data_type, CHAR(columndefault, 20)column_default

from sys.syscolumns COLUMNS, sys.systables TABLES where COLUMNS.referenceid = TABLES.tableid and TABLES.tablename = 'BROKERAA';

查看指定表中的数据内容。

select * from BROKERAA;

退出 ij(同时会自动断开数据库连接)。

exit;

在文檔中 精通 WebSphere Message Broker (頁 164-167)