Ваш вопрос непонятен. Возможно, вы не можете полностью понять, как работает технология Java Servlet.
Сервлет - это класс, который загружается с первого запроса клиентом (веб-браузер и т. Д.) Или предварительно загружается при запуске servlet container. Поток назначается для обработки каждого входящего запроса для генерации исходящего ответа. Обычно объект сервлета не останавливается при запуске, пока контейнер сервлета не закроется. Вы должны понимать, что один сервлет сервлетов обрабатывает многие циклы запросов-ответов многими пользователями. Подробнее discussion here.
Сессия запускается для каждого индивидуального набора циклов запроса-ответа. Каждый сеанс представлен объектом HttpSession. Автоматический тайм-аут сеансов, если пользователь перестает делать запросы. Реализации обычно по умолчанию составляют полчаса до тайм-аута. Вы можете настроить это значение по умолчанию. Это, вероятно, решение, которое вы ищете, но я не уверен, учитывая отсутствие ясности в вашем вопросе. Вызовите setMaxInactiveInterval
на этом объекте сеанса.
int seconds = TimeUnit.MINUTES.toSeconds(3) ; // Three minutes converted to a number of seconds.
someHttpSession.setMaxInactiveInterval(seconds);
Кроме того, вы можете программно закрыть сессию, вызвав invalidate
на этот объект сессии, в discussed here.
Вы можете запросить время начала этого сеанса как счет миллисекунд с эпохи 1970 UTC, позвонив по номеру getCreationTime
.
long millisSinceEpoch = someHttpSession.getCreationTime();
Сделать Instant
от этого, чтобы увидеть этот момент в UTC.
Instant instantSessionStarted = Instant.ofEpochMilli(millisSinceEpoch);
Используйте Duration
объект для просмотра прошедшего времени. На текущий момент звоните Instant.now
.
Duration durationOfThisSession = Duration.between(instantSessionStarted , Instant.now());
Вопрос трудно понять, дать некоторые подробности, что вы сделали? –
@BalusC Я сомневаюсь, что это дубликат, TimerTaks не предназначен для измерения, а для планирования. Хотя я согласен, трудно сказать, каков фактический вопрос. –
извините за то, что он не стал более понятным. В принципе, я хотел бы запустить свой сервлет на 2-3 минуты, а затем остановиться, но я не хочу использовать работу cron здесь –