Можете ли вы программно перезапустить приложение j2ee?

#web-development

Вопрос:

Кто-нибудь знает, можно ли перезапустить приложение J2EE (из приложения)? Если да, то как?

Я хотел бы иметь возможность сделать это независимо от сервера приложений, если это возможно.

Приложение будет запускаться на множестве различных серверов приложений-в основном на том, что предпочитает клиент.

Если это невозможно сделать не зависящим от сервера приложений способом, то, вероятно, это действительно не стоит делать для моих целей. Я всегда могу просто отобразить сообщение, информирующее пользователя о том, что ему нужно будет перезапустить приложение вручную.

Ответ №1:

Я бы предположил, что вы вряд ли найдете агностический способ для сервера приложений. И хотя я не претендую на то, чтобы знать ваши требования, я мог бы усомниться в дизайне, который требует перезапуска приложения, кроме установщика, который развертывает новую версию. Наконец, я бы предположил, что для любых нетривиальных целей «любой» сервер приложений не будет работать. У вас должен быть список поддерживаемых серверов приложений и версий, описанных в примечаниях к выпуску, чтобы вы могли протестировать их все и не беспокоиться о поддержке клиентов на несоответствующем сервере/версии. По опыту, всегда существуют тонкие различия, например, между Apache Tomcat и BEA WebLogic, и эти различия часто недокументированы и их трудно определить, пока вы с ними не столкнетесь.

Ответ №2:

Большинство серверов приложений предоставляют интерфейс JMX, поэтому вы можете его вызвать.

Ответ №3:

Я бы предложил использовать servicewrapper для управления сервером приложений, а затем использовать его методы api для запроса перезапуска службы. Там будет какая-то конфигурация, и трудно понять, будет ли это работать в вашей конкретной среде, но это единственное известное мне решение, которое даже достаточно совместимо с несколькими серверами.