WAS 6與Websphere MQ6的整合

WAS 6與Websphere MQ6的整合

整合 的目的是讓MQ作為websphere application server的JMS provider,所有的JMS消息會被was轉發到MQ隊列 中,由於MQ提供了多種平台的API,因此消息的傳遞可以不再通過轉發的方式。任何平台都可以直接連接到MQ獲取/發送消息,減少了跨平台消息傳遞中的不 確定因素。

首先在MQ中建立隊列管理器、消息隊列、服務器連接通道(SYSTEM.DEF.SVRCONN類型的通道)。由於 was將通過CLIENT模式與MQ通信,所以有身份認證的問題,需要在信道上配置MAC用戶標識,它的值應該是運行MQ的操作系統的一個用戶名稱,該用 戶應該具有管理員權限,推薦使用啟動MQ的用戶名稱。如果不配置該MAC用戶標識,那麼運行was的機器必須建立一個與運行MQ完全相同的用戶/密碼來啟 動was,才能提供正確的身份信息。如果採用BINDINF的傳輸模式,就不需要任何的認證信息,但是該模式只能適用於was和MQ在同一台機器上的情 況。而且一個was環境中,只能允許一個連接工廠使用BINDING模式連接,所以不推薦該模式。
假設建立起來的隊列管理器為 sobeymam,ccsid為1208(Unicode)或者1381(GB2312),通信端口為1414;建立的消息隊列為test,ccsid為 1208(Unicode);服務器連接信道為s1,MAC用戶標識為bromon。

下一步是在WAS中建立隊列連接工廠,「資源」—-「JMS提供者」—-「Websphere MQ」—-「Websphere MQ隊列連接工廠」—-「新建」。填寫以下內容:

名稱:                        cf
JNDI名稱:                    jms/cf
隊列管理器:                mam
主機:                        運行MQ的機器名或IP
端口:                        1414(與隊列管理器的偵聽端口對應)
通道:                        s1(與隊列管理器的服務器連接通道對應)
傳輸類型:                    CLIENT
取消「已起用XA」選項

連接工廠的配置完成。

下一步是建立隊列目標。「資源」—-「JMS提供者」—-「Websphere MQ」—-「Websphere MQ隊列目標」—-「新建」。填寫以下內容:

名稱:                        test
JNDI名稱:                    jms/test
基本隊列名:                test(對應MQ中的本地隊列)
CCSID:                        1208
目標客戶機:                MQ

隊列目標的配置完成。需要說明的是,目標客戶機的值決定了JMS的消息將以什麼格式存放在MQ中。如果是」MQ」,那麼消息將直接使用MQSTR格式,純 文本的存放,任何平台都能夠獲取消息直接顯示。如果是」JMS」,那麼消息將使用MSHRF2格式存放,java平台能夠不加處理的正常識別,其他平台必 須要做轉換才能正確獲得消息文本。推薦使用」MQ」。

如果需要部署消息BEAN獲取MQ中的消息,那麼還需要配置偵聽器端口,「服務器」—-「應用服務器」—-「server1」—-「通信」—-「消息傳遞」—-「消息偵聽器服務」—-「偵聽器端口」—-「新建」。填寫一下內容:

名稱:                            test
連接工廠JNDI名:                jms/cf(對應websphere隊列連接工廠的JNDI)
目標JNDI名:                    jms/test(對應websphere隊列目標的JNDI)

偵聽器端口配置完成,部署消息bean時需提供該偵聽器名稱。

重啟websphere使配置生效。

編寫一個jsp嘗試發送消息:

  1. <%@ page contentType=”text/html; charset=GBK”%>
  2. <%@ page import=”java.util.*”%>
  3. <%@ page import=”javax.jms.*”%>
  4. <%@ page import=”javax.naming.*”%>
  5. <%
  6. try
  7. {
  8. Properties p = new Properties();
  9. put(Context.INITIAL_CONTEXT_FACTORY,”com.ibm.websphere.naming.WsnInitialContextFactory”);
  10. put(Context.URL_PKG_PREFIXES, “com.ibm.ws.naming”);
  11. put(Context.PROVIDER_URL, “iiop://localhost:2809/”);
  12. InitialContext ctx = new InitialContext(p);
  13. QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup(“jms/cf”);//連接工廠
  14. QueueConnection conn = qcf.createQueueConnection();
  15. Queue q = (Queue) ctx.lookup(“jms/test”);//隊列
  16. QueueSession s = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
  17. start();
  18. QueueSender sender = s.createSender(q);
  19. TextMessage tm=s.createTextMessage(“測試websphere mq有中文字符”);//創建文本消息
  20. send(tm, DeliveryMode.PERSISTENT, 4, 0);
  21. close();
  22. }catch(Exceptione)
  23. {
  24. println(e);
  25. }
  26. %>

 

以下文章點擊率最高

Loading…

     

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