JBoss AS 7 - 启动初始化后

时间:2013-04-05 14:45:22

标签: java jboss web.xml

有没有办法捕获一个事件/实现一个类或类似的东西来检测JBoss(AS7)是否正常运行并且所有应用程序都已部署?

我创建了一个StartupServlet(扩展了HttpServlet),因为我需要调用本地Web服务来初始化系统。但由于我的应用程序未完全部署,我对Web服务的调用(在StartupServlet中)以“404 Not Found”结束。

我尝试在web.xml上使用<listener>...</listener>,但它无效。

2 个答案:

答案 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();
}