Включить временную метку развертывания на страницу JSP

#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. Пожалуйста, обратите внимание, что не перезапускайте весь сервер для развертывания новой версии моего приложения, я просто позволяю ему автоматически публиковать новую сборку, а затем перезапускать модуль. Ваш подход показывает только время запуска сервера, а не время запуска модуля, верно?