Мое веб-приложение будет развернуто как пакет WAR в экземпляре Jetty. Перед выполнением запросов необходимо выполнить много кеширования. Как я могу вызвать метод кэширования перед чем-либо еще? является статическим void main() в стандарте веб-приложения?Как инициализировать веб-приложение?
ответ
Стандартным (старым) способом является кодирование сервлета, который позаботится об инициализации в своем методе init()
. Вы вынуждаете его необходимо инициализировать при запуске приложения, добавив load-on-startup
положительное значение в вашей web.xml
<servlet>
<servlet-name>myinit</servlet-name>
<servlet-class>com.example.MyInitServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
Сегодня это больше обычного, чтобы иметь контейнер для кофейных зерен, как Spring, который заботится о такого рода вещей (инстанцировании объектов услуг, предварительная загрузка кэшируемых совместно используемых данных и т. д.).
Примечание: этот рецепт предназначен для webapps в целом, а не для Jetty.
Мне нравится это решение, потому что я могу использовать его с любым сервером веб-приложений. Для этого мне понадобится фиктивный сервлет. Есть ли способ выполнить такую инициализацию без реализации сервлета? Существует ли статический void main() для веб-приложений? – Gatis
Кажется, добавление ServletContextListener - это все, что я хочу. – Gatis
Если вы хотите, чтобы люди ответили на ваши вопросы, пожалуйста, примите несколько ответов. –