MQ 的基本操作(三)-配置JNDI

三.配置JNDI
用JMS實現消息的發送和接收時,經常會用到JNDI。因為JNDI這種方式比較靈活,對於編程也比較簡單。
在安裝了MQSeries Client for Java之後,在\java\bin目錄下找到JMSAdmin.config文件。該文件主要用來說明Context的存儲方式及存儲地址,對應於文件中的兩個參數INITIAL_CONTEXT_FACTORY和PROVIDER_URL。典型的JMSAdmin.config文件內容如下:

#INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
#INITIAL_CONTEXT_FACTORY=com.ibm.ejs.ns.jndi.CNInitialContextFactory
#
#PROVIDER_URL=ldap://polaris/o=ibm,c=us
PROVIDER_URL=file:/d:/temp
#PROVIDER_URL=iiop://localhost/
#
SECURITY_AUTHENTICATION=none

INITIAL_CONTEXT_FACTORY表示JMSAdmin Tool使用的服務提供商。當前有三種受支持的值。com.sun.jndi.ldap.LdapCtxFactory用於LDAP,如果使用它就必須安裝一個LDAP伺服器。com.sun.jndi.fscontext.RefFSContextFactory用於文件系統上下文,它只需要使用者提供存放上下文的文件路徑。com.ibm.ejs.ns.jndi.CNInitialContextFactory是專門為websphere提供的,它需要和websphere的CosNaming資源庫一起使用。
PROVIDER_URL表示會話初始上下文的URL,由JMSAdmin tool實現的所有JNDI操作的根。它和INITIAL_CONTEXT_FACTORY一一對應。

ldap://hostname/contextname 用於LDAP
file:[drive:]/pathname 用於文件系統上下文
iiop://hostname[:port]/[?TargetContext=ctx] 用於訪問websphere CosNaming名稱空間

最後還有一個參數SECURITY_AUTHENTICATION,用於說明JNDI是否把安全性憑證傳遞給了您使用的服務供應商。只有當使用了LDAP服務供應商時,才使用此參數。此參數有三個值,none(匿名認證)、simple(簡單認證)和CRAM-MD5認證機制。如果沒有提供有效值,預設值為none。

確認配置文件之後,可以在\java\bin目錄下啟動JMSAdmin控制台。也可以在任何目錄下用下面的命令來啟動控制台:
JMSAdmin –cfg MQ_JAVA_INSTALL_PATH\java\bin\JMSAdmin.config
其中MQ_JAVA_INSTALL_PATH為MQSeries Client for Java安裝的根目錄。
若啟動失敗,則好好檢查一下您的環境變數是否設置正確。根據我個人的經驗,除了把com.ibm.mq.jar和com.ibm.mqjms.jar加入到環境變數外,還要把fscontext.jar和providerutil.jar加入到環境變數。
進入JMSAdmin控制台後,您可以自由定義sub context。對於子上下文的操作,主要有一下命令:
display ctx
define ctx(ctxname)
change ctx(ctxname)
change ctx(=up)
change ctx(=init)
delete ctx(ctxname)

當然,在這裡的主要任務並非是用來定義sub context,而是用來定義以下幾個對象:
MQQueueConnectionFactory
MQTopicConnectionFactory
MQQueue
MQTopic
(還有其它的一些對象,如MQXAQueueConnectionFactory等,不常用到,在此不作說明。)
可以使用很多動詞來操縱目錄名稱空間中的受管理對象。ALTER、DEFINE、DISPLAY、DELETE、COPY和MOVE,它們的用法都算比較簡單,這裡只列舉一二以作說明。
例一:定義一QueueConnectionFactory,連接主機10.10.10.18,埠1414
DEFINE QCF(EXAMPLEQCF)+
DESC(Example Queue Connection Factory)+
TRAN(CLIENT)+
HOST(10.10.10.18)+
QMGR(QM_EXAMPLE)+
CHAN(S_EXAMPLE)+
PORT(1414)+
CCSID(1381)

例二:定義一Queue,其對應於MQ中的Q_EXAMPLE
DEFINE Q(EXAMPLEQL)+
DESC(Local queue)+
QMGR(QM_EXAMPLE)+
QUEUE(Q_EXAMPLE)+
CCSID(1381)

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營