我怎样才能让 MDB 最后部署在我的 wildfly 上

how can i do for an MDB to deploy last on my wildfly

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

知道如何解决这个问题吗?

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

  1. 使用 ServletContextListener,一旦您的应用程序部署完成,服务器将调用 ServletContextListener.contextInitialized 方法
  2. 使用wildfly的mbean支持,可以通过wildfly的JMX接口查询mBean,判断服务器状态是否为'started'。但请注意,只有在这种情况下,您的代码才会绑定到 wildfly。

一旦您决定确定服务器启动状态的选项,您需要在 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) {

    }
}