Я хочу использовать метод, который называют только однажды после развертывания на Сервере [дубликат]

7
задан BalusC 2 March 2010 в 15:56
поделиться

3 ответа

Нет, он не вызывается в каждом запросе. Он вызывается только во время инициализации сервлета, что обычно происходит только один раз за время существования веб-приложения. Также см. этот ответ для получения более подробной информации о том, как создаются и выполняются сервлеты.

Если вы действительно хотите выполнить некоторую глобальную инициализацию или инициализацию в масштабе всего приложения (которая, таким образом, сама по себе не привязана только к конкретному сервлету), вы обычно используете для этого ServletContextListener . Вы можете выполнить инициализацию в методе contextInitialized () .

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class Config implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        // Do stuff during webapp's startup.
    }
    public void contextDestroyed(ServletContextEvent event) {
        // Do stuff during webapp's shutdown.
    }
}

Если вы еще не используете Servlet 3.0 и не можете выполнить обновление и, следовательно, не можете использовать аннотацию @WebListener , то вам необходимо вручную зарегистрировать его в ] /WEB-INF/web.xml как показано ниже:

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>
21
ответ дан 6 December 2019 в 07:05
поделиться

init () вызывается только при создании сервлета. Это может происходить несколько раз в течение срока службы сервера. Вы используете его для инициализации любых переменных или логики, необходимых для регулярного использования сервлета.

Изменить: После перечитывания вашего сообщения он технически не вызывается с каждым запросом, потому что сервер создает новый экземпляр сервлета для каждого запроса. Проверьте настройки вашего сервера, чтобы узнать, получит ли он новый сервлет или оставить один сервлет в течение всего срока службы сервера.

2
ответ дан 6 December 2019 в 07:05
поделиться
2
ответ дан 6 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: