Weblogic10 與 Websphere MQ7集成方案[2]

前文再續,書接上一回:
[url]http://sylven.iteye.com/blog/550896[/url]
在上面這篇文章,我們完成了MQ、JMS的配置,那麼接下來我們來到重點--將weblogic和MQ連接起來。

[size=x-large]3.3.集成到Weblogic[/size]
其實這部分的工作,沒多少難度,就是配置比較繁瑣,開始吧:

[size=large]3.3.1.創建外部JMS服務器(foreign JMS server)[/size]

啓動weblogic,登陸控制檯,展開domain->服務->消息傳遞->JMS模塊。
選擇新建一個JMS模塊JMSModule_MQ:

[align=center][img]http://dl.iteye.com/upload/attachment/182349/76653068-f60a-35b9-b1b5-87e7537ac547.png[/img][/align]
[align=center]圖3.3.1:創建JMS模塊[/align]

選擇一個server:
[align=center][img]http://dl.iteye.com/upload/attachment/182353/f0528700-c843-3706-9dee-6d56acfebc6c.png[/img][/align]
[align=center]圖3.3.2:創建JMS模塊2[/align]

在剛纔的模塊創建一個資源,類型爲外部服務器(foreign server)名爲ForeignServer_JMS:
[align=center][img]http://dl.iteye.com/upload/attachment/182357/304e0b83-d6d9-35eb-9f8b-8e44e9ac2597.png[/img][/align]
[align=center]圖3.3.3:創建模塊資源--外部服務器[/align]

[align=center][img]http://dl.iteye.com/upload/attachment/182351/cef6a396-0ca1-3829-af5e-1988939b57d4.png[/img][/align]
[align=center]圖3.3.4:創建模塊資源--外部服務器2[/align]

外部服務器JND配置
[align=center][img]http://dl.iteye.com/upload/attachment/182355/e618dad2-ca53-3aae-bdd0-a75c29b8821c.png[/img][/align]
[align=center]圖3.3.5:JNDI參數[/align]

在外部服務器創建兩個目標:
[img]http://dl.iteye.com/upload/attachment/182359/89b0f74f-0e37-3dcf-8821-46a49b1295ea.png[/img]
[align=center]圖3.3.6:兩個目標[/align]

及兩個連接工廠:
[img]http://dl.iteye.com/upload/attachment/182363/bcfe2a5c-0e41-3ad1-a775-5534f88d079d.png[/img]
[align=center]圖3.3.7:兩個連接工廠[/align]

配置完之後,當然要寫一個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隊列放入一個消息:
[align=center][img]http://dl.iteye.com/upload/attachment/182388/be84925d-5e9b-35f2-be3a-68266f461a15.png[/img][/align]
[align=center]圖3.3.8.放入測試消息[/align]

如果所有配置正確,則MDB->MQTestBean2會接收到剛剛放入的消息,並進行處理,然後放到approval隊列:
[align=center]
[img]http://dl.iteye.com/upload/attachment/182386/857a633f-f949-39ea-abc6-4f27929ebd0d.png[/img]
[/align]
[align=center]圖3.3.9.weblogic服務器輸出(netbeans控制檯)[/align]

之後我們可以再到MQ管理器查看approval隊列,可以看到MDB處理後的消息:
[align=center]
[img]http://dl.iteye.com/upload/attachment/182397/8587e5ef-5b5f-308f-98d3-d0bac5387c95.png[/img]
[/align]
[align=center]圖3.3.10.到approval隊列查看處理後的消息[/align]

OK,至此,我們成功地將MQ無縫地集成到了weblogic上,使部署在weblogic上的MDB可以像使用原生的JMS一樣操控MQ隊列了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章