JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--EJB  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
WAS 6与Websphere MQ6的整合
作者:     文章来源:
访问次数:22次     加入时间:2007年04月05日
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尝试发送消息:
  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.   p.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
  10.   p.put(Context.URL_PKG_PREFIXES, "com.ibm.ws.naming");
  11.   p.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.   conn.start();
  18.   QueueSender sender = s.createSender(q);
  19.   TextMessage tm=s.createTextMessage("测试websphere mq有中文字符");//创建文本消息
  20.   sender.send(tm, DeliveryMode.PERSISTENT, 4, 0);
  21.   sender.close();
  22. }catch(Exception e)
  23. {
  24.   out.println(e);
  25. }
  26. %>
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号