如何在远程计算机未运行时为远程JMS队列初始化ConnectionFactory?

Eri*_*rik 5 deployment jboss jndi jms jbossmq

使用JBoss 4.0.5,JBossMQ和Spring 2.0.8,我试图配置Spring来实例化依赖于远程JMS队列资源的bean.我遇到的所有示例都依赖于使用JNDI来查找远程ConnectionFactory对象之类的东西.

我的问题是在尝试启动将消息放入远程队列的计算机时,如果远程计算机未启动,则JNDI查找失败,导致部署失败.有没有办法让Spring继续尝试在后台查找此对象,同时不阻止部署的其余部分?

ska*_*man 3

如果没有看到 Spring 配置,很难确定,但假设您正在使用 SpringJndiObjectFactoryBean进行 JNDI 查找,那么您可以将该lookupOnStartup属性设置为 false,这样即使 JNDI 目标不存在,也允许上下文启动。JNDI 解析将在第一次使用 ConnectionFactory 时完成。

然而,这只会将问题进一步转移到链上,因为如果其他组件尝试在启动时获取 JMS Connection,那么您就会回到开始的地方。您可以lazy-init="true"在其他 bean 上使用该属性来防止在部署时发生这种情况,但很容易意外地将某些内容放入配置中,从而强制所有内容初始化。