Код инициализации Джерси после полного запуска веб-приложения - PullRequest
1 голос
/ 16 сентября 2011

Я задавал этот вопрос ранее: Код инициализации запуска приложения из Джерси при запуске для инициализации приложения

Есть ли способ запустить этот код инициализации после полной инициализации веб-приложения сервером? Я столкнулся с проблемой catch-22 в том, что мне нужно, чтобы Tomcat полностью запустил веб-приложение, прежде чем я смогу выполнить свой входящий вызов один раз?

1 Ответ

1 голос
/ 17 сентября 2011

Есть несколько соображений.Во-первых, Джерси реализован как сервлет, и вот как он загружается.Самый простой способ отделить запуск сервлета от запуска контекста сервлета - не загружать его при запуске.Выполните это, пропустив элемент load-on-startup из дескриптора сервлета в web.xml.Установка его в неположительное значение также должна работать.

Если вы должны загрузить сервлет при запуске, но все же хотите отсоединить его, что было в моем случае, вам, вероятно, придется написатьнекоторый пользовательский код, который я сделал.Я не мог придумать другого пути.Используйте прослушиватель некоторого типа - ServletContextListener или Spring ApplicationListener , в зависимости от того, как именно настроено ваше приложение, - чтобы запустить новый поток, который будет инициализировать ваш сервлет Джерси ссделать HTTP-запрос к нему.Это немного грязно, но, как я уже сказал, это единственное, что я и моя команда могли придумать.

...