初始化Java Web App

时间:2008-11-22 15:40:46

标签: java servlets initialization web-applications

我有一个简单的网络应用程序,有几个jsp页面,servlet和pojo。我想在发出任何请求之前初始化连接池。做这个的最好方式是什么?可以在首次部署应用程序时完成,还是必须等到第一个请求进入后才能完成?

2 个答案:

答案 0 :(得分:8)

使用ServletContextListener并在web.xml中正确声明它。这种方式比启动servlet更好。它更有条理,你的意图是显而易见的。它也保证在任何请求之前运行。它还为您提供了一个关闭钩子来清除池。

以下是我的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 here和示例here

答案 1 :(得分:0)

初始化连接池的基本启动servlet怎么样?