#web-development
Вопрос:
Кто-нибудь знает, можно ли перезапустить приложение J2EE (из приложения)? Если да, то как?
Я хотел бы иметь возможность сделать это независимо от сервера приложений, если это возможно.
Приложение будет запускаться на множестве различных серверов приложений-в основном на том, что предпочитает клиент.
Если это невозможно сделать не зависящим от сервера приложений способом, то, вероятно, это действительно не стоит делать для моих целей. Я всегда могу просто отобразить сообщение, информирующее пользователя о том, что ему нужно будет перезапустить приложение вручную.
Ответ №1:
Я бы предположил, что вы вряд ли найдете агностический способ для сервера приложений. И хотя я не претендую на то, чтобы знать ваши требования, я мог бы усомниться в дизайне, который требует перезапуска приложения, кроме установщика, который развертывает новую версию. Наконец, я бы предположил, что для любых нетривиальных целей «любой» сервер приложений не будет работать. У вас должен быть список поддерживаемых серверов приложений и версий, описанных в примечаниях к выпуску, чтобы вы могли протестировать их все и не беспокоиться о поддержке клиентов на несоответствующем сервере/версии. По опыту, всегда существуют тонкие различия, например, между Apache Tomcat и BEA WebLogic, и эти различия часто недокументированы и их трудно определить, пока вы с ними не столкнетесь.
Ответ №2:
Большинство серверов приложений предоставляют интерфейс JMX, поэтому вы можете его вызвать.
Ответ №3:
Я бы предложил использовать servicewrapper для управления сервером приложений, а затем использовать его методы api для запроса перезапуска службы. Там будет какая-то конфигурация, и трудно понять, будет ли это работать в вашей конкретной среде, но это единственное известное мне решение, которое даже достаточно совместимо с несколькими серверами.