2011-12-03 117 views
2

我正在尋找一種在應用程序本身內正確關閉(取消部署)Java Web應用程序的方法。我試過System.exit(),但是這不僅關閉了webApp,還弄亂了Glassfish。正確關閉Java Web應用程序

我知道contextlistener,我只是想知道如何啓動關機程序。

+3

的申請是由集裝箱輪進行管理,而不是其他方式。你正在嘗試做容器本身的工作,而且幾乎不會有一個便攜式(和安全的)解決方案。很可能,只要容器允許您調用這樣的類,就需要使用容器特定的類。 –

+0

你爲什麼試圖讓應用程序自行解除部署? – Paul

回答

2

通常的做法是使用asadmin undeploy命令。

該命令的一般形式是:

as-install/bin/asadmin undeploy war-name 

對於戰爭的名稱,使用文字打招呼,不完整的hello.war名。

對於hello.war例如,命令是:

as-install/bin/asadmin undeploy hello 

請參見以下參考資料:

http://docs.oracle.com/cd/E19798-01/821-1757/geyvr/index.html

http://docs.oracle.com/docs/cd/E19798-01/821-1758/undeploy-1/index.html

要取消部署程序,就可以使用JSR- 88雖然我真的不明白爲什麼你想這樣做的理由。見

http://blogs.oracle.com/japod/entry/using_jsr_88_for_web

http://www.jcp.org/en/jsr/detail?id=88

+0

Web應用程序通過使用RMI與本地Java應用程序連接,如果由於某種異常導致RMI連接丟失,那麼Web應用程序沒有理由因此必須關閉。 – rkokkelk

+0

使用進程生成器並調用此函數來解開自己 – tgkprog

3

部署Web應用程序是應用程序服務器的職責。我知道它是如何在Glassfish但其他應用程序。服務器(例如JBoss,Tomcat等)具有基於Web的管理應用程序,可以執行此操作。

如果您想要從應用程序本身以編程方式取消部署應用程序,則可以使用JMX。參考glassfish JMX實現來知道調用哪個bean。但恕我直言,我不認爲你真的需要這個。

相關問題