有没有办法捕获一个事件/实现一个类或类似的东西来检测JBoss(AS7)是否正常运行并且所有应用程序都已部署?
我创建了一个StartupServlet(扩展了HttpServlet),因为我需要调用本地Web服务来初始化系统。但由于我的应用程序未完全部署,我对Web服务的调用(在StartupServlet中)以“404 Not Found”结束。
我尝试在web.xml上使用<listener>...</listener>
,但它无效。
答案 0 :(得分:0)
您可以尝试使用Startup
EJB,如解释here:
@Singleton
@Startup
public class StartupBean {
@PostConstruct
private void startup() { ... }
@PreDestroy
private void shutdown() { ... }
}
然而,bean不会检测您的应用程序是否已部署,只会检测并启动当前应用程序(包含bean的应用程序)。由于@PostConstruct
方法很早就被调用,因此您不能依赖任何其他可用的bean或服务。
编辑:Jboss也有native management API。 AFAIK它也可以用于查询部署。不幸的是,它的文档并不令人印象深刻,但也许你可以搞清楚。
答案 1 :(得分:0)
根据我的理解,您不需要检测何时部署了所有应用程序,只有在部署了应用程序时才需要了解。要做到这一点,你应该定义ServletContextListener: http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContextListener.html#contextInitialized%28javax.servlet.ServletContextEvent%29
部署时可以捕捉到:
public void contextInitialized(ServletContextEvent sce)
{
servletContext = sce.getServletContext();
}