2010-04-22 198 views
0

我有一個運行在本地tomcat服務器上的web應用程序。如何在關閉瀏覽器窗口時關閉本地tomcat服務器?

當用戶啓動應用程序(通過桌面快捷方式)時,服務器啓動,應用程序在瀏覽器窗口中打開。 但是,當用戶只需點擊關閉按鈕停止應用程序,服務器仍在後臺運行 - 這很煩人。

我試圖從javascript中使用「unonload」和「onbeforeunload」事件,但不幸的是,這些事件也被應用程序中的其他請求觸發。 所以我不能使用它們,除非我做了很多重構。

有沒有人有一個可能的解決方案的想法?

順便說一句,我覺得有趣的是Visual Studio調試Web應用程序時的行爲。當我關閉瀏覽器窗口時,Visual Studio也會觸發停止調試模式。因此,它似乎注意到瀏覽器窗口的關閉事件,這正是我所需要的。但我不知道他們是怎麼做的......

+1

過去我們有類似的要求,但最終說服用戶有另一個桌面快捷方式來停止應用程序。 – JoseK 2010-04-23 06:41:40

回答

0

您可以設置一個短會話超時,並使用HttpSessionListener。在sessionDestroyed(..)你可以阻止tomcat(例如使用catalina.bat)。

否則,您可以嘗試使用detect browser close,並使用ajax(在瀏覽器關閉之前)向服務器發送關閉消息。

+0

感謝您的回答! 在某些系統上,應用程序會一直運行,但只能不時使用。所以,當我設置一個短會話超時,並對sessionDestroyed(..)行事恐怕該應用程序不可用時,用戶需要他們。所以我真的必須知道用戶何時關閉瀏覽器窗口。 – agez 2010-04-23 12:05:57

+0

@agez看到我的更新 – Bozho 2010-04-25 06:01:20

1

你可以包裝Tomcat的啓動並啓動你的應用程序在批處理文件或shell腳本? (不知道你的目標操作系統是什麼...)

該腳本/批處理文件將啓動Tomcat,然後啓動您的應用程序。當用戶退出應用程序時,腳本/批處理文件會關閉Tomcat。

+0

感謝您的答案! 目標操作系統是Windows,我實際上是通過批量啓動應用程序和服務器。但是用戶通常通過瀏覽器窗口的關閉按鈕來關閉應用程序...並且tomcat一直在運行... – agez 2010-04-23 12:00:28

+0

好的,但是您也可以在啓動和停止Tomcat的同一批處理文件中啓動應用程序嗎? 即application.bat: 啓動tomcat yourapp.exe tomcat的停止 除非你做一個 「開始yourapp.exe」,運行yourapp將暫停批量處理,直至退出。當它退出時,應該關閉tomcat。 關鍵是將所有這些放在一個批處理文件中。 – kmontgom 2010-04-23 12:05:34

+0

不幸的是,這並不是正確的評論。在批處理文件中:tomcat start yourapp.exe tomcat stop 。 我不記得catalina命令參數來啓動和停止tomcat。 – kmontgom 2010-04-23 12:07:34