我怎样才能让MDB最后部署在我的野生动物身上

时间:2017-10-26 19:06:47

标签: ejb-3.0 wildfly-10 message-driven-bean

我发生的事情是MDB接收消息并尝试处理它们甚至我的服务器还没有完全启动

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以通过以下两种技术之一找出您的服务器启动是否已完成:

  1. 使用ServletContextListener,一旦您的应用程序部署完成,服务器将调用ServletContextListener.contextInitialized方法
  2. 使用来自wildfly的mbean支持,您可以通过wildfly的JMX接口查询mBean,并确定服务器状态是否为“已启动”。但请注意,只有在这种情况下,您的代码才会被绑定到wildfly。
  3. 一旦您决定了解服务器启动状态的选项,您需要在MDB的postconstruct方法中检查它,并且仅在服务器启动时继续。

    @MessageDriven(...)
    public class MyMdb implements MessageListener {
        @PostConstruct
        public void init() {
            // check if server has started here 
            //if server is not started, sleep and re-check again.
        }
    
        public void onMessage(Message message) {
    
        }
    }