Sun Java System Message Queue 3.7 UR1 管理指南

使用对象管理器实用程序

使用 Message Queue 对象管理器实用程序 (imqobjmgr) 可以创建和管理受管理对象。imqobjmgr 命令提供了以下子命令,用于对受管理对象执行各种操作:

add

将受管理对象添加到对象存储库中

delete

从对象存储库中删除受管理对象

list

列出对象存储库中现有的受管理对象

query

显示与受管理对象有关的信息

update

修改受管理对象的属性

有关 imqobjmgr 命令的语法、子命令和选项的参考信息,请参见对象管理器实用程序

大部分对象管理器操作都要求将以下信息指定为 imqobjmgr 命令的选项:

添加受管理对象

imqobjmgr 命令的 add 子命令将连接工厂和主题或队列目的地的受管理对象添加到对象存储库中。存储在 LDAP 对象存储库中的受管理对象的查找名称必须以前缀 cn= 开头;文件系统对象存储库中的查找名称不必以任何特定前缀开头,但是不能包含正斜杠字符 (/)。


注 –

对象管理器仅列出并显示 Message Queue 受管理对象。如果对象存储库中应该包含一个非 Message Queue 对象,并且该对象与要添加的受管理对象具有相同的查找名称,则当您尝试执行添加操作时,将会收到一条错误消息。


添加连接工厂

要使客户端应用程序能够创建代理连接,请为要创建的连接类型添加连接工厂受管理对象:队列连接工厂或主题连接工厂。示例 8–1 显示了一条用于将队列连接工厂(受管理对象类型 qf)添加到 LDAP 对象存储库的命令。该对象具有查找名称 cn=myQCF,并通过 jms 连接服务连接到主机 myHost 上使用端口号 7272 运行的代理。


示例 8–1 添加连接工厂


imqobjmgr add
   -l "cn=myQCF"
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"
   -t qf
   -o "imqAddressList=mq://myHost:7272/jms"

添加目的地

创建表示目的地的受管理对象时,最好先创建物理目的地,然后将受管理对象添加到对象存储库中。可以使用命令实用程序 (imqcmd) 创建物理目的地,如创建物理目的地中所述。

示例 8–2 中显示的命令将受管理对象添加到表示某个主题目的地的 LDAP 对象存储库,该主题目的地的查找名称为 myTopic,物理目的地名称为 physTopic用于添加队列目的地的命令会很相似,但是受管理对象的类型(-t 选项)应该是 q(对应于 "queue destination")而不是 t(对应于 "topic destination")。


示例 8–2 将目的地添加到 LDAP 对象存储库


imqobjmgr add
   -l "cn=myTopic"
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"
   -t t
   -o "imqDestinationName=physTopic"

示例 8–3 显示的是同一个命令,但是受管理对象存储库在 Solaris 文件系统而不是 LDAP 服务器中。


示例 8–3 将目的地添加到文件系统对象存储库


imqobjmgr add
   -l "cn=myTopic"
   -j "java.naming.factory.initial=
           com.sun.jndi.fscontext.RefFSContextFactory"
   -j "java.naming.provider.url=file:///home/foo/imq_admin_objects"
   -t t
   -o "imqDestinationName=physTopic"

删除受管理对象

要从对象存储库中删除受管理对象,可以使用 imqobjmgr 命令的 delete 子命令,并指定要删除对象的查找名称、类型和位置。示例 8–4 中显示的命令用于删除在上述添加目的地中添加的对象。


示例 8–4 删除受管理对象


imqobjmgr delete
   -l "cn=myTopic"
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"
   -t t

列出受管理对象

使用对象管理器的 list 子命令,可以获取对象存储库中所有受管理对象或特定类型受管理对象的列表。示例 8–5 说明了如何列出 LDAP 服务器上的所有受管理对象。


示例 8–5 列出所有受管理对象


imqobjmgr list
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"

示例 8–6 列出了所有队列目的地(类型为 q)。


示例 8–6 列出特定类型的受管理对象


imqobjmgr list
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"
   -t q

查看受管理对象的信息

query 子命令显示与指定的受管理对象有关的信息,该对象使用查找名称及包含该对象的对象存储库的属性来标识。示例 8–7 显示了与查找名称 cn=myTopic 的对象有关的信息。


示例 8–7 查看受管理对象的信息


imqobjmgr query
   -l "cn=myTopic"
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"

修改受管理对象的属性

要修改受管理对象的属性,可以使用 imqobjmgr update 子命令。您应该提供该对象的查找名称和位置,并使用 -o 选项指定新的属性值。

修改受管理对象的属性更改在示例 8–8 中添加到对象存储库的队列连接工厂的 imqReconnectAttempts 属性值。


示例 8–8 修改受管理对象的属性


imqobjmgr update
   -l "cn=myQCF"
   -j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
   -j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
   -j "java.naming.security.principal=uid=homerSimpson,ou=People,o=imq"
   -j "java.naming.security.credentials=doh"
   -j "java.naming.security.authentication=simple"
   -t qf
   -o "imqReconnectAttempts=3"

使用命令文件

使用 imqobjmgr 命令的 -i 选项可以指定命令文件的名称,命令文件使用 Java 属性文件语法来表示全部或部分子命令子句。此功能在指定对象存储库属性时尤为有用,通常,指定对象存储库属性时需要执行大量的键入操作,并且在多次调用 imqobjmgr 时指定属性的操作可能相同。使用命令文件还可以避免超出命令行所允许的最大字符数。

示例 8–9 说明了对象管理器命令文件的一般语法。请注意,version 属性不是命令行选项:它指的是命令文件自身的版本(而不是 Message Queue 产品的版本),因此必须将其值设置为 2.0


示例 8–9 对象管理器命令文件语法


version=2.0
cmdtype=[ add | delete | list | query | update ]
obj.lookupName=lookup name
objstore.attrs.objStoreAttrName1=value1
objstore.attrs.objStoreAttrName2=value2
   . . .
objstore.attrs.objStoreAttrNameN=valueN
obj.type=[ q | t | cf | qf | tf | xcf | xqf | xtf | e ]
obj.attrs.objAttrName1=value1
obj.attrs.objAttrName2=value2
   . . .
obj.attrs.objAttrNameN=valueN

例如,请考虑前面示例 8–1 中显示的对象管理器命令,该命令将队列连接工厂添加到 LDAP 对象存储库。此命令可以封装在命令文件中,如示例 8–10 所示。如果将此命令文件命名为 MyCmdFile,则可以使用以下命令行来执行该命令:

imqobjmgr -i MyCmdFile

示例 8–10 示例命令文件


version=2.0
cmdtype=add
obj.lookupName=cn=myQCF
objstore.attrs.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
objstore.attrs.java.naming.provider.url=ldap://mydomain.com:389/o=imq
objstore.attrs.java.naming.security.principal=\\
                                       uid=homerSimpson,ou=People,o=imq
objstore.attrs.java.naming.security.credentials=doh
objstore.attrs.java.naming.security.authentication=simple
obj.type=qf
obj.attrs.imqAddressList=mq://myHost:7272/jms

还可以仅使用命令文件指定 imqobjmgr 子命令子句部分,而在命令行上明确提供其余部分。例如,示例 8–11 中显示的命令文件仅指定了 LDAP 对象存储库的属性值。


示例 8–11 部分命令文件


version=2.0
objstore.attrs.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
objstore.attrs.java.naming.provider.url=ldap://mydomain.com:389/o=imq
objstore.attrs.java.naming.security.principal=\\
                                       uid=homerSimpson,ou=People,o=imq
objstore.attrs.java.naming.security.credentials=doh
objstore.attrs.java.naming.security.authentication=simple

然后,可以使用此命令文件在 imqobjmgr 命令中指定对象存储库,同时明确提供其余选项,如示例 8–12 所示。


示例 8–12 使用部分命令文件


imqobjmgr add
   -l "cn=myQCF"
   -i MyCmdFile
   -t qf
   -o "imqAddressList=mq://myHost:7272/jms"

您可以根据使用的平台,从以下相应位置找到命令文件的其他示例:

Solaris:/usr/demo/imq/imqobjmgr Linux:/opt/sun/mq/examples/imqobjmgr Windows:IMQ_HOME/demo/imqobjmgr