Инициализация Java Web App - PullRequest
       12

Инициализация Java Web App

2 голосов
/ 22 ноября 2008

У меня есть простое веб-приложение с несколькими jsp-страницами, сервлетами и приложениями. Я хочу инициализировать пул соединений до того, как будут сделаны какие-либо запросы. Каков наилучший способ сделать это? Можно ли это сделать при первом развертывании приложения, или вам нужно подождать, пока не поступит первый запрос?

Ответы [ 2 ]

8 голосов
/ 22 ноября 2008

Используйте ServletContextListener и правильно объявите его в web.xml. Этот способ предпочтительнее запуска сервлета. Это более организовано, и ваше намерение очевидно. Также гарантированно выполняется перед любым запросом. Это также дает вам крюк отключения для очистки пула.

Вот фрагмент из моего web.xml, например:

<listener>
  <listener-class>
    com...ApplicationListener
  </listener-class>
</listener>

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

public class ApplicationListener implements ServletContextListener {

  private ServletContext sc = null;

  private Logger log = Logger
    .getLogger(ApplicationListener.class);

  public void contextInitialized(ServletContextEvent arg0) {
    this.sc = arg0.getServletContext();
    try {
      // initialization code
    } catch (Exception e) {
      log.error("oops", e);
    }
    log.info("webapp started");
  }

  public void contextDestroyed(ServletContextEvent arg0) {
    try {
      // shutdown code
    } catch (Exception e) {
      log.error("oops", e);
    }
    this.sc = null;
    log.info("webapp stopped");
  }

}

См. API здесь и примеры здесь .

0 голосов
/ 22 ноября 2008

А как насчет базового сервлета запуска для инициализации пула соединений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...