AS:Websphere 8.5.5
MQ impl:SIB
在应用程序启动期间, MDB 开始调用 onMessage方法,后者又调用 initialContext.lookup ,以便查找特定的bean 。 有时(在各种启动迭代期间),返回null而不是引用bean对象。
此行为不确定:在某些启动迭代中,由于更长的 MDB初始化,bean的上下文有时间进行所有 JNDI名称初始化和消息消耗暂停。
是否有任何解决方法或魔术 IBM密钥来解决问题?
答案 0 :(得分:0)
解决此问题的方法之一是使用启动ordering。根据启动顺序序列,可以按顺序启动不同的已部署应用程序。在您的情况下,我将确保您所需的EJB组件具有较低的序列,以便首先启动它,然后是MDB,以便查找永远不会失败
答案 1 :(得分:0)
如果您在MDB中发生任何其他初始化,则考虑@PostContruct
注释会很有帮助。在初始化完成之前,我也过早地启动了onMessage,导致消息未被处理。将我的附加初始化逻辑放入带有此注释的方法后,它解决了我的问题。
@PostConstruct
public void initialize() {
....
}
答案 2 :(得分:0)
所以,正如所有人一样,爱情"" Websphere,毫无疑问是一个IBM漏洞。对不起,我撒谎......同时还有两个错误。