2012-04-03 3 views
1

Мне нужно освободить некоторые ресурсы в своем веб-приложении (Tomcat 7).
Я пытаюсь сделать это в destroy моего servlet.
Проблема в том, что когда я делаю getServletContext() в моем destroy, ничего не происходит.
При отладке я успел увидеть:Правильный способ очистки в сервлете

java.lang.NullPointerException в javax.servlet.GenericServlet.getServletContext (GenericServlet.java:125)

происходящий из моей линии getSerlvetContext() в destroy метод моего servlet.

Так что прямо сейчас, я понятия не имею, как я должен выполнять очистку в своем веб-приложении.
Я сохранил некоторые ресурсы в ServletContext, так что его можно использовать в любом месте в моем приложении, и, насколько я знаю, ресурс очистка должны быть сделаны либо

1) в destroy из servlets или
2) contextDestroyed of ServletContextListener

Но ни один из них не работает должным образом. В случае (1) я получаю NullPointerException при попытке доступа к контексту сервлета.
В случае (2) веб-приложение уже завершено, поэтому, если у меня есть статические методы, ответственные за выполнение, например, перераспределение связей с БД и т. д. классы (как я понял проблему) уже были выгружены JVM, поскольку веб-приложение уже отключено.

Я что-то не так? Что мне делать?

ответ

3

Чтобы получить ServletContext, обычный способ, чтобы сохранить его в переменной экземпляра.В зависимости от того, вы расширяете Servlet или реализовать ServletContextListener, я бы рекомендовал создать переменный экземпляр для контекста, а затем сохранить его в одном из следующих способов:

  • ServletContextListener.contextInitialized(ServletContextEvent sce): Использование sce.getServletContext() для получения ссылки контекста, которые затем можно сохранить в переменной экземпляра.
  • HttpServlet.init(ServletConfig config): Вызовите метод super (init) с параметром config, чтобы позднее вы могли его получить, используя getServletContext(). Если это не сработает, вы можете сохранить контекст в переменной экземпляра, используя config.getServletContext().
-5

С надеждой. На самом деле вам не нужно беспокоиться о процессе очистки процесса приложения TOMCAT/J2EE. Если вы заинтересованы в этом, просто удалите/очистите каталог каталогов Catalina. Очень просто удалить/очистить все ваши рабочие данные и сделать ваше приложение новым .Actually при запуске веб-приложений Tomcat создать временную рабочую директорию внутри установки folder.So, выполните следующие действия: -

шаги: -

  1. Остановите свой кот
  2. Перейти к вашему коту (C: \ Program Files \ Apache Software Foundation \ Tomcat 5.5)
  3. F Ind рабочей папки & удаление (сдвиг удалить)

Теперь запустите котом еще раз & Наслаждайтесь новым нового заявления.

Имейте счастливое программирование с TOMCAT. Любой другой следит за моим блогом.

Благодаря

+0

Как это связано с моим вопросом? – Jim

+0

Downvote: не затрагивает вопрос. – nwinkler

Смежные вопросы