有沒有什麼辦法來捕捉事件/實現一個類,或類似的東西,檢測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