目前我有一個由Weblogic 10R3的Java EE應用程序主機,我有興趣得到1消息驅動的Bean測試。問題是,我沒有訪問該Bean是聽外來JMS服務器,這裏是MDB代碼:JMS隊列「熱」交換
import static com.citi.primefinance.utils.jms.ForeignJMSConstants.Queue.INCOMING_QUEUE_SWIFT_FX;
@MessageDriven(name = "IncomingSwiftFxProcessorMDB", mappedName = INCOMING_QUEUE_SWIFT_FX)
public class IncomingSwiftFxProcessorMDB extends AbstractMessageDrivenBean {
@Override
protected void processMessage(Serializable obj) throws Exception{
debug(this.getClass().getName() + ".processMessage()");
if (obj instanceof String) {
info(this.getClass().getName() + ": received on Message object");
processSwiftFxTradeMessage((String)obj);
} else {
error(this.getClass().getName() + ": received an object " + obj + " which is not a TextMessage");
}
}
我的計劃是因爲豆將查找隊列通過JNDI,和我有權訪問Weblogic託管服務器。所以我可以刪除外部JMS服務器,然後添加一個本地jms隊列和持有確切JNDI名稱的connectionFactory。因此隔離外部依賴性。
有人認爲這是合理的嗎?或者任何人有其他想法?我也在考慮使用Mocking將JMS的依賴關係分離出來。
任何幫助深表感謝,感謝
下面是一些Weblogic的記錄,指示信息的Bean無法處理「熱」掉呢?
incomingSwiftFxProcessorMDB無法連接到JMS目標:IncomingSwiftFxQueue。錯誤爲: 消息驅動的EJB嘗試使用JNDI名稱:SwiftConnectionFactory連接到JMS連接工廠。但是,具有JNDI名稱的對象:SwiftConnectionFactory不是JMS連接工廠。 NestedException消息是:weblogic.jms.client.JMSConnectionFactory>
順便說一句,外國隊列的供應商是websphere-mq,我猜想在本地創建的隊列將是weblogic.jms.queue。我是MessageDriven Bean的新手,我想它可以處理差異? –