我拥有在本地tomcat服务器上运行的Web应用程序。
当用户启动应用程序(通过桌面快捷方式)时,服务器启动并在浏览器窗口中打开应用程序。 但是当用户只是点击关闭按钮来停止应用程序时,服务器仍然在后台运行 - 这很烦人。
我尝试使用javascript中的“unonload”和“onbeforeunload”事件,但不幸的是,这些事件也会在应用程序中的其他一些请求中被触发。 所以我不能使用它们,除非我做了很多重构。
有没有人对可能的解决方案有所了解?
顺便说一句,我觉得有趣的是调试Web应用程序时Visual Studio的行为。当我关闭浏览器窗口时,Visual Studio也会触发停止调试模式。所以它似乎以某种方式注意到浏览器窗口的关闭事件,这正是我需要的。但我不知道他们是怎么做的......
答案 0 :(得分:1)
您可以包装Tomcat的启动并在批处理文件或shell脚本中启动您的应用程序吗? (不确定你的目标操作系统是什么......)
脚本/批处理文件将启动Tomcat,然后启动您的应用程序。当用户退出应用程序时,脚本/批处理文件将关闭Tomcat。
答案 1 :(得分:0)
您可以设置短会话超时,并使用HttpSessionListener
。在sessionDestroyed(..)
上你可以停止tomcat(例如使用catalina.bat)。
否则您可以尝试detect browser close,并使用ajax(在浏览器关闭之前)向服务器发送关闭消息。