Инициализация и завершение веб-приложения java
Я пытаюсь реализовать инициализацию и завершение работы webapp. Это включает инициализацию и завершение работы:
- Hibernate (v3.6);
- C3P0 (v0.9.1.2);
- EHCache (v2.3.0);
- Кварц (1.8.4);
- Другие задачи, специфичные для моего webapp;
Использование Tomcat 5.5.30 и Java 6. Моя идея - избежать утечки ресурсов, главным образом из-за перераспределения webapp в среде разработки.
Как это реализовать?
Ответы
Ответ 1
Обычно для инициализации и выключения Web вы будете писать ServletContextListener.
Чтобы сделать это, выполните следующие действия:
- Напишите класс, который реализует
javax.Servlet.ServletContextListener
- Добавить тег в
web.xml
дескриптор развертывания для регистрации только что созданного класса
- Разверните приложение
При развертывании приложения вызывается метод contextInitialized
. Здесь вы можете разместить всю инициализацию. При вызове shutdown contextDestroyed
.
Ответ 2
Но вы все же хотите управлять своими ресурсами таким образом, чтобы они не протекали, если сбой приложения и нормальные процедуры выключения не вызываются.
Ответ 3
Также возможно использовать HTTP-сервлет, но слушатель - лучший вариант.
Вы должны расширить класс с помощью HttpServlet и задать следующие вещи для вашего web.xml
<servlet>
<servlet-name>StartupServlet</servlet-name>
<servlet-class>your.package.servlets.StartupServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Класс может перезаписать метод init и destroy.