【发布时间】:2012-06-25 00:52:49
【问题描述】:
目前我有一个 Weblogic 10R3 的 Java EE 应用程序主机,我有兴趣测试 1 个消息驱动 Bean。问题是我无法访问 Bean 正在监听的外部 JMS 服务器,这里是 MDB 代码:
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");
}
}
我的计划是因为 Bean 将通过 JNDI 查找队列,并且我确实可以访问 Weblogic 托管服务器。所以我可以删除外部 JMS 服务器,然后添加一个本地 jms 队列和 connectionFactory 保存确切的 JNDI 名称。因此隔离外部依赖。
人们认为这是合理的吗?或者有人有其他想法吗?我也在考虑使用 Mocking 来隔离对 JMS 的依赖。
非常感谢任何帮助,谢谢
这是一些 Weblogic 日志,表明 Message Bean 无法处理“热”交换?
incomingSwiftFxProcessorMDB 无法连接到 JMS 目标:IncomingSwiftFxQueue。错误是: 消息驱动的 EJB 尝试使用 JNDI 名称连接到 JMS 连接工厂:SwiftConnectionFactory。但是,具有 JNDI 名称的对象:SwiftConnectionFactory 不是 JMS 连接工厂。 NestedException 消息是:weblogic.jms.client.JMSConnectionFactory>
【问题讨论】:
-
顺便说一句,国外队列的供应商是 websphere-mq,我猜本地创建的队列应该是 weblogic.jms.queue。我是 MessageDriven Bean 的新手,我想它可以处理差异?
标签: java queue jms weblogic ibm-mq