有没有什么办法来捕捉事件/实现一个类,或类似的东西,检测JBoss(AS7)启动并运行,所有的应用程序已部署?JBoss AS 7 - 启动后初始化
我做了StartupServlet(它扩展了HttpServlet),因为我需要调用本地Web服务来初始化系统。但是因为我的应用程序没有完全部署,所以我的Web服务调用(在StartupServlet中)以“404 Not Found错误”结束。
我试图在web.xml上使用<listener>...</listener>
,但它不起作用。
有没有什么办法来捕捉事件/实现一个类,或类似的东西,检测JBoss(AS7)启动并运行,所有的应用程序已部署?JBoss AS 7 - 启动后初始化
我做了StartupServlet(它扩展了HttpServlet),因为我需要调用本地Web服务来初始化系统。但是因为我的应用程序没有完全部署,所以我的Web服务调用(在StartupServlet中)以“404 Not Found错误”结束。
我试图在web.xml上使用<listener>...</listener>
,但它不起作用。
,你可以尝试使用Startup
EJB,像解释here:
@Singleton
@Startup
public class StartupBean {
@PostConstruct
private void startup() { ... }
@PreDestroy
private void shutdown() { ... }
}
然而bean将不会检测到您的应用程序是否部署,仅当前应用程序 - 包含豆一 - 部署和开始。由于@PostConstruct
方法非常早,所以不能依赖任何其他可用的bean或服务。
编辑:Jboss也有native management API。 AFAIK它也可以用来查询部署。不幸的是它的文档并不令人印象深刻,但也许你可以弄明白。
根据我的理解,您不需要检测何时部署了所有应用程序,只有在部署应用程序时才需要了解。要做到这一点,你应该定义的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();
}
我试过了,但它被称为方式来早。我开始觉得没有办法做到这一点。 – Joshua 2013-04-05 15:08:03
@Joshua - 至少这不是微不足道的。我增加了一个可能性 - 也许它可以提供帮助。 – kostja 2013-04-05 15:18:20