Weblogic10 与 Websphere MQ7集成方案[2]

在上面这篇文章,我们完成了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代码如下: 
Java代码   收藏代码
  1. package mq;  
  2.   
  3. import javax.annotation.Resource;  
  4. import javax.ejb.ActivationConfigProperty;  
  5. import javax.ejb.MessageDriven;  
  6. import javax.jms.Message;  
  7. import javax.jms.MessageListener;  
  8. import javax.jms.QueueConnection;  
  9. import javax.jms.QueueSender;  
  10. import javax.jms.QueueSession;  
  11. import javax.jms.Session;  
  12. import javax.jms.TextMessage;  
  13.   
  14. /** 
  15.  *  
  16.  * @author Justin 
  17.  */  
  18. @MessageDriven(name = "TestMDB2", mappedName = "jms/applicationJMSQueue",  
  19. activationConfig = {  
  20.     @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")  
  21. })  
  22. public class MQTestBean2 implements MessageListener {  
  23.   
  24.     @Resource(mappedName = "jms/approvalJMSQueue")  
  25.     private javax.jms.Queue approvalJMSQueue;  
  26.     @Resource(mappedName = "jms/approvalFactory")  
  27.     private javax.jms.QueueConnectionFactory approvalFactory;  
  28.   
  29.     public void onMessage(Message message) {  
  30.   
  31.         try {  
  32.             String msg = ((TextMessage) message).getText();  
  33.             System.out.println("=> 收到申请: " + msg);  
  34.             sendMessage("同意申请:" + msg);  
  35.         } catch (Exception ex) {  
  36.             ex.printStackTrace();  
  37.         }  
  38.     }  
  39.   
  40.     private void sendMessage(String msg) throws Exception {  
  41.         QueueConnection conn = null;  
  42.         QueueSession session = null;  
  43.         try {  
  44.             conn = approvalFactory.createQueueConnection();  
  45.             session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);  
  46.             QueueSender sender = session.createSender(approvalJMSQueue);  
  47.             Message newMsg = session.createTextMessage(msg);  
  48.             sender.send(newMsg);  
  49.             System.out.println("=> 发送审批结果:" + msg);  
  50.         } catch (Exception e) {  
  51.             e.printStackTrace();  
  52.         } finally {  
  53.             try {  
  54.                 session.close();  
  55.                 conn.close();  
  56.             } catch (Exception e) {  
  57.                 e.printStackTrace();  
  58.             }  
  59.         }  
  60.     }  
  61. }  


部署文件如下: 
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <weblogic-ejb-jar xmlns="http://www.bea.com/ns/weblogic/90">  
  3.     <weblogic-enterprise-bean>  
  4.         <ejb-name>TestMDB2</ejb-name>  
  5.         <message-driven-descriptor>  
  6.             <destination-jndi-name>  
  7.                 jms/applicationJMSQueue  
  8.             </destination-jndi-name>  
  9.             <connection-factory-jndi-name>  
  10.                 jms/applicationFactory  
  11.             </connection-factory-jndi-name>  
  12.         </message-driven-descriptor>  
  13.     </weblogic-enterprise-bean>  
  14. </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队列了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值