我是 Wicket 的新手,想从内部维护一个 Web 应用程序,使用某种维护管理页面来运行清理、数据库更新、恢复等。由于我计划使用 Hibernate 或类似的数据绑定,我想从内部触发应用程序的完全重新启动,而不向能够运行这些操作的每个人提供随附的 Tomcat 管理器密码。
据我所知,似乎没有一种简单的方法可以在没有管理员密码的情况下触发 Java Web 应用程序的真正重启?但是,由于许多 Java webapp 在其管理面板中具有此类重启功能,我认为应该可以在特定的 servlet 容器或某些 web 框架中触发重启。他们必须以某种方式解决问题?(或者也许他们并没有真正从头开始重新启动,而只是在没有干净重启的情况下重新初始化?)
我找不到任何关于 Wicket 或 Tomcat 能够通过关闭并从其应用程序重新启动来触发的信息,尽管 Wicket 中有一些内部方法可能能够做到这一点?(可以公开访问,但 JavaDoc 建议不要这样做,因为它们仅供内部使用)
从安全的角度来看,我真的不明白为什么应用程序不能从自己的代码中请求重新启动。
可以这样做吗?如果可以,我必须在我的应用程序中做什么才能重新启动它?
编辑:只是为了让我的问题更准确:用户和应用程序都不应该有任何可用于访问 Tomcat 管理器界面的密码。我正在考虑调用一些方法或设置一些标志,以触发 servlet 容器以重新启动该特定应用程序,而无需授权。我的想法是,由于应用程序在 servlet 容器中运行,它应该有某种方式来关闭和重新启动。如果 Java 应用程序服务器通常无法做到这一点,则可能有某种方法可以在应用程序级别通过调用底层框架(在本例中为 Wicket)来结束所有正在运行的线程,尽可能清理并重新启动使用框架的应用程序;类似于应用程序堆栈的“软重启”。