目前我有一个由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的新手,我想它可以处理差异? –