MDB在完全初始化JNDI名称之前开始使用消息

时间:2016-09-06 09:29:57

标签: java-ee jms websphere ibm-mq message-driven-bean

AS:Websphere 8.5.5

MQ impl:SIB

在应用程序启动期间, MDB 开始调用 onMessage方法,后者又调用 initialContext.lookup ,以便查找特定的bean 。 有时(在各种启动迭代期间),返回null而不是引用bean对象

此行为不确定:在某些启动迭代中,由于更长的 MDB初始化,bean的上下文有时间进行所有 JNDI名称初始化和消息消耗暂停。

是否有任何解决方法或魔术 IBM密钥来解决问题?

3 个答案:

答案 0 :(得分:0)

解决此问题的方法之一是使用启动ordering。根据启动顺序序列,可以按顺序启动不同的已部署应用程序。在您的情况下,我将确保您所需的EJB组件具有较低的序列,以便首先启动它,然后是MDB,以便查找永远不会失败

答案 1 :(得分:0)

如果您在MDB中发生任何其他初始化,则考虑@PostContruct注释会很有帮助。在初始化完成之前,我也过早地启动了onMessage,导致消息未被处理。将我的附加初始化逻辑放入带有此注释的方法后,它解决了我的问题。

@PostConstruct
    public void initialize() {
....
}

答案 2 :(得分:0)

所以,正如所有人一样,爱情"" Websphere,毫无疑问是一个IBM漏洞。对不起,我撒谎......同时还有两个错误。