我怎样才能让 MDB 最后部署在我的 wildfly 上
how can i do for an MDB to deploy last on my wildfly
发生在我身上的是 MDB 接收消息并尝试处理它们,甚至我的服务器还没有完全启动
知道如何解决这个问题吗?
您可以通过以下两种技术之一查看您的服务器启动是否完成:
- 使用 ServletContextListener,一旦您的应用程序部署完成,服务器将调用 ServletContextListener.contextInitialized 方法
- 使用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) {
}
}
发生在我身上的是 MDB 接收消息并尝试处理它们,甚至我的服务器还没有完全启动
知道如何解决这个问题吗?
您可以通过以下两种技术之一查看您的服务器启动是否完成:
- 使用 ServletContextListener,一旦您的应用程序部署完成,服务器将调用 ServletContextListener.contextInitialized 方法
- 使用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) {
}
}