Message Queue 物件管理員公用程式 (imqobjmgr) 可讓您建立並管理受管理物件。imqobjmgr 指令提供下列子指令,以便在受管理物件上執行各種作業:
將受管理物件增加至物件存放區
從物件存放區刪除受管理物件
列出物件存放區中現有的受管理物件
顯示有關受管理物件的資訊
修改受管理物件的屬性
如需 imqobjmgr 指令的語法、子指令和選項之參考資訊,請參閱物件管理員公用程式。
大多數物件管理員作業需要您指定下列資訊以作為 imqobjmgr 指令的選項:
用戶端應用程式會依據這個邏輯名稱,使用 Java Naming and Directory Interface 在物件存放區中查找受管理物件。
如需有關可能的屬性及其值的資訊,請參閱物件存放區。
受管理物件的類型 (-t)
可能的類型包括:
佇列目標
主題目標
連線工廠
佇列連線工廠
主題連線工廠
分散式作業事件的連線工廠
分散式作業事件的佇列連線工廠
分散式作業事件的主題連線工廠
SOAP 端點
受管理物件的屬性 (-o)
如需有關可能的屬性及其值的資訊,請參閱受管理物件屬性。
imqobjmgr 指令的 add 子指令,會將連線工廠和主題或佇列目標的受管理物件增加至物件存放區。儲存在 LDAP 物件存放區中的受管理物件必須擁有以 cn= 字首開頭的查找名稱;檔案系統物件存放區中的查找名稱則不需要有特定的字首,但是絕對不能包含斜線字元 (/)。
物件管理員僅會列出與顯示 Message Queue 受管理物件。如果物件存放區中包含非 Message Queue 物件,而且其查找名稱與您想增加的受管理物件名稱相同,則當您嘗試執行增加作業時會出現錯誤。
若要讓用戶端應用程式能建立代理程式連線,請為要建立的連線類型增加連線工廠受管理物件:佇列連線工廠或主題連線工廠。範例 8–1 中顯示的指令,會將佇列連線工廠 (受管理物件類型 qf) 增加至 LDAP 物件存放區。物件具有查找名稱 cn=myQCF,並使用 jms 連線服務連線至連接埠號 7272 之主機 myHost 上所執行的代理程式。
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 (表示「主題目標」)。
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 伺服器中。
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 中顯示的指令會刪除上述新增目標中增加的物件。
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 伺服器上所有的受管理物件。
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)。
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 之物件的相關資訊。
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 屬性值。
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。
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
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 物件存放區的屬性值。
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 所示。
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