Инициализация и завершение веб-приложения 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.