2

有什么方法可以捕获事件/实现一个类或类似的东西,以检测 JBoss (AS7) 是否已启动并正在运行并且所有应用程序都已部署?

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

我尝试<listener>...</listener>在 web.xml 上使用 a 但它不起作用。

4

2 回答 2

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();
}
于 2013-04-12T06:46:54.307 回答
0

您可以尝试使用StartupEJB,如下所述

@Singleton
@Startup
public class StartupBean {

  @PostConstruct
  private void startup() { ... }

  @PreDestroy
  private void shutdown() { ... }
}

但是,bean 不会检测您的应用程序是否已部署,只会检测当前应用程序(包含 bean 的应用程序)已部署并启动。由于该@PostConstruct方法很早就被调用,因此您不能依赖任何其他可用的 bean 或服务。

编辑: Jboss 也有一个本地管理 API。AFAIK 它也可以用于查询部署。不幸的是,它的文档并不令人印象深刻,但也许您可以弄清楚。

于 2013-04-05T14:49:21.800 回答