Я новичок в Wicket и хотел бы поддерживать веб-приложение изнутри, используя какую-то страницу администрирования для выполнения очистки, обновлений БД, восстановления и так далее. Поскольку я планирую использовать Hibernate или аналогичный для привязки данных, я хотел бы запустить полную перезагрузку приложения изнутри себя, не давая всем, кто сможет выполнить эти действия, пароль администратора Tomcat.
Насколько я выяснил, похоже, не существует простого способа вызвать реальный перезапуск веб-приложения Java без пароля администратора? Однако, поскольку многие веб-приложения Java имеют такие функции перезапуска в своих административных панелях, я предполагаю, что должна быть возможность инициировать перезапуск либо в определенных контейнерах сервлетов, либо в некоторых веб-инфраструктурах. Они как-то должны делать свое дело? (или, может быть, они не перезагружаются с нуля, а просто инициализируются без перезагрузки?)
Я не смог найти что-либо о том, что Wicket или Tomcat могут запускаться с выключением и перезапуском из их приложений, хотя в Wicket есть какие-то внутренние методы, которые могут это сделать? (может быть доступен публично, но JavaDoc рекомендует против него, поскольку они предназначены только для внутреннего использования)
С точки зрения безопасности, я не совсем понимаю, почему приложение не может запрашивать такой перезапуск из своего собственного кода.
Можно ли это сделать, и если да, что мне нужно будет сделать в моем приложении, чтобы оно было перезапущено?
Редактировать: Просто, чтобы уточнить мой вопрос: ни у пользователя, ни у приложения не должно быть паролей, которые можно было бы использовать для доступа к интерфейсу менеджера Tomcat. Я думал о каком-то вызываемом методе или о каком-либо флаге, который должен был запускать контейнер сервлета для перезапуска этого конкретного приложения без необходимости авторизации для этого. Я думаю, что, поскольку приложение работает в контейнере сервлета, оно должно быть каким-то образом отключено и перезапущено. Если это вообще невозможно с серверами приложений Java, может быть какой-то способ сделать это на уровне приложений, вызвав базовую структуру (в данном случае Wicket), чтобы завершить все запущенные потоки, очистить как можно больше и перезапустить приложение, использующее фреймворк; что-то вроде «мягкой перезагрузки» стека приложений.