当前位置: 代码迷 >> Web前端 >> Weblogic10 与 Websphere MQ7集验方案[2]
  详细解决方案

Weblogic10 与 Websphere MQ7集验方案[2]

热度:905   发布时间:2012-11-01 11:11:32.0
Weblogic10 与 Websphere MQ7集成方案[2]
前文再续,书接上一回:
http://sylven.iteye.com/blog/550896
在上面这篇文章,我们完成了MQ、JMS的配置,那么接下来我们来到重点--将weblogic和MQ连接起来。

3.3.集成到Weblogic
其实这部分的工作,没多少难度,就是配置比较繁琐,开始吧:

3.3.1.创建外部JMS服务器(foreign JMS server)

启动weblogic,登陆控制台,展开domain->服务->消息传递->JMS模块。
选择新建一个JMS模块JMSModule_MQ:


图3.3.1:创建JMS模块


选择一个server:

图3.3.2:创建JMS模块2


在刚才的模块创建一个资源,类型为外部服务器(foreign server)名为ForeignServer_JMS:

图3.3.3:创建模块资源--外部服务器



图3.3.4:创建模块资源--外部服务器2


外部服务器JND配置

图3.3.5:JNDI参数


在外部服务器创建两个目标:

图3.3.6:两个目标


及两个连接工厂:

图3.3.7:两个连接工厂


配置完之后,当然要写一个MDB测试一下:
消息驱动bean代码如下:
package mq;

import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.QueueConnection;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * 
 * @author Justin
 */
@MessageDriven(name = "TestMDB2", mappedName = "jms/applicationJMSQueue",
activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class MQTestBean2 implements MessageListener {

    @Resource(mappedName = "jms/approvalJMSQueue")
    private javax.jms.Queue approvalJMSQueue;
    @Resource(mappedName = "jms/approvalFactory")
    private javax.jms.QueueConnectionFactory approvalFactory;

    public void onMessage(Message message) {

        try {
            String msg = ((TextMessage) message).getText();
            System.out.println("=> 收到申请: " + msg);
            sendMessage("同意申请:" + msg);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void sendMessage(String msg) throws Exception {
        QueueConnection conn = null;
        QueueSession session = null;
        try {
            conn = approvalFactory.createQueueConnection();
            session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            QueueSender sender = session.createSender(approvalJMSQueue);
            Message newMsg = session.createTextMessage(msg);
            sender.send(newMsg);
            System.out.println("=> 发送审批结果:" + msg);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                session.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}


部署文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar xmlns="http://www.bea.com/ns/weblogic/90">
    <weblogic-enterprise-bean>
        <ejb-name>TestMDB2</ejb-name>
        <message-driven-descriptor>
            <destination-jndi-name>
                jms/applicationJMSQueue
            </destination-jndi-name>
            <connection-factory-jndi-name>
                jms/applicationFactory
            </connection-factory-jndi-name>
        </message-driven-descriptor>
    </weblogic-enterprise-bean>
</weblogic-ejb-jar>


打包并发布到weblogic。

现在测试一下:
在MQ管理器中,在application队列放入一个消息:

图3.3.8.放入测试消息


如果所有配置正确,则MDB->MQTestBean2会接收到刚刚放入的消息,并进行处理,然后放到approval队列:



图3.3.9.weblogic服务器输出(netbeans控制台)


之后我们可以再到MQ管理器查看approval队列,可以看到MDB处理后的消息:



图3.3.10.到approval队列查看处理后的消息


OK,至此,我们成功地将MQ无缝地集成到了weblogic上,使部署在weblogic上的MDB可以像使用原生的JMS一样操控MQ队列了。