#java #jsp #jakarta-ee #deployment #wildfly
#java #jsp #джакарта-ee #развертывание #wildfly
Вопрос:
Я пишу веб-приложения на Java EE 7 с использованием JSP и сервлетов, развертывая их на локальном сервере Wildfly 10.
Чтобы помочь мне в разработке и тестировании моего кода, было бы полезно включить небольшую временную метку в отображаемую веб-страницу, чтобы я мог напрямую видеть, когда была развернута версия, которую я просматриваю в своем браузере.
Это помешало бы мне как забыть о развертывании изменений, так и просматривать старые кэшированные версии вместо последней.
Как я могу отобразить дату и время, когда веб-приложение Java EE было развернуто на моем сервере Wildfly непосредственно на веб-странице?
Моя IDE — Eclipse Neon для Java EE, если это имеет значение.
Ответ №1:
Это не время развертывания, а время запуска приложения. Возможно, это полезно для ваших целей. Вы можете внедрить класс и использовать его для отображения данных на своей странице.
@Startup
@Singleton
public class Deploytime
{
private LocalDateTime starttime;
@PostConstruct
public void init() {
starttime = LocalDateTime.now();
}
}
Кроме того, я могу думать только о плагине Maven Git, который может генерировать такие вещи, как время сборки, идентификатор фиксации, … в надлежащий файл, который вы также можете использовать для отображения его на странице (если вы используете git / maven).
Комментарии:
1. Спасибо, это может быть действительно одинаково полезно. Собираюсь протестировать его завтра утром
Ответ №2:
Вероятно, для этого тоже есть API, но вы можете получить время запуска сервера из командной строки. Предполагая, что у вас настроены имя пользователя и пароль администратора (т. Е. Вы запустили что-то вроде add-user.sh ) ты мог бы убежать:
curl --digest "http://user:password@localhost:9990/management/core-service/platform-mbean/type/runtime?operation=attributeamp;name=start-time"
Конечно, это не Java — вам придется либо выполнить System.exec для этого, либо использовать что-то вроде HttpClient. Кроме того, большая проблема здесь заключается в том, что для кода должны быть доступны имя пользователя и пароль администратора.
Документы по управлению HTTP Wildfly содержат более подробную информацию с небольшим примером фрагмента Java.
РЕДАКТИРОВАТЬ: Извините — не следовало предполагать, что сервер перезапускается при развертывании. Вы можете получить время развертывания для веб-приложения с помощью:
curl --digest "http://user:password@localhost:9990/management/deployment/test-1.0-SNAPSHOT.war/?operation=attributeamp;name=enabled-time"
Однако это кажется более сложным, чем другой ответ на запуск чего-либо при запуске. Я не вижу времени развертывания для веб-приложения, поскольку это время должно быть где-то сохранено на случай перезапуска сервера.
Комментарии:
1. Пожалуйста, обратите внимание, что не перезапускайте весь сервер для развертывания новой версии моего приложения, я просто позволяю ему автоматически публиковать новую сборку, а затем перезапускать модуль. Ваш подход показывает только время запуска сервера, а не время запуска модуля, верно?