WAS 6與Websphere MQ6的整合
bromon原創 請尊重版權
整合的目的是讓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嘗試發送消息:
- < %@ page contentType="text/html; charset=GBK" %>
- < %@ page import="java.util.*"%>
- < %@ page import="javax.jms.*"%>
- < %@ page import="javax.naming.*" %>
- < %
- try
- {
- Properties p = new Properties();
- p.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
- p.put(Context.URL_PKG_PREFIXES, "com.ibm.ws.naming");
- p.put(Context.PROVIDER_URL, "iiop://localhost:2809/");
- InitialContext ctx = new InitialContext(p);
- QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("jms/cf");//連接工廠
- QueueConnection conn = qcf.createQueueConnection();
- Queue q = (Queue) ctx.lookup("jms/test");//隊列
- QueueSession s = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
- conn.start();
- QueueSender sender = s.createSender(q);
- TextMessage tm=s.createTextMessage("測試websphere mq有中文字符");//創建文本消息
- sender.send(tm, DeliveryMode.PERSISTENT, 4, 0);
- sender.close();
- }catch(Exception e)
- {
- out.println(e);
- }
- %>
文章來源于領測軟件測試網 http://www.kjueaiud.com/
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月