2013-10-30 71 views
0

我有兩個方案程序創建一個連接,並訪問IBM MQ 7

的第一個程序:

qManager = serverConfig.qMgr; 
      queueName=serverConfig.qName; 
      this.serverType=serverType; 
      //Factory Settings 

      MQEnvironment.hostname =serverConfig.server; 

      MQEnvironment.port = serverConfig.port; 
      // 
      MQEnvironment.channel = serverConfig.sChannel; 

      MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);//Connection 

// Create a connection to the queue manager 

      //qMgr = new MQQueueManager(qManager); 

第二個程序:

   InitialDirContext ctx = null; 
       Hashtable environment = new java.util.Hashtable(); 
       try{ 
       environment.put(Context.INITIAL_CONTEXT_FACTORY,QUEUE_CONTEXT); 
       environment.put(Context.PROVIDER_URL,QUEUE_URL); 
       ctx = new InitialDirContext(environment); 

在第一個程序,它要求隊列管理器名稱,但在第二個程序中,它不需要隊列管理器名稱。我需要用第二個程序替換第一個程序代碼。任何人都可以幫助我解決這個問題。

回答

0

您的第二個程序是JMS應用程序,它使用JNDI查找來獲取連接詳細信息。

  environment.put(Context.INITIAL_CONTEXT_FACTORY,QUEUE_CONTEXT); 
      environment.put(Context.PROVIDER_URL,QUEUE_URL); 

      ctx = new InitialDirContext(environment);  
      connectionFactory = (ConnectionFactory) ctx.lookup(MYCF_LOOKUP_NAME); 

QUEUE_CONTEXT是從QUEUE_URL查找的連接工廠名稱。 QUEUE_CONTEXT將具有所有連接細節,如隊列管理器名稱,通道等。