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 連線服務連線至連接埠號 7272 之主機 myHost 上所執行的代理程式。


範例 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 (表示「佇列目標」),而非 t (表示「主題目標」)。


範例 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