2008-11-22 59 views
2

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

+0

请不要跟我重新标记被打乱。虽然你和我(以及其他人)知道它真的是拼写成'初始化',但接受的标签是'初始化'。 – MPelletier 2010-04-12 17:42:13

回答

0

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

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

+0

你认为“哎呀”是一个有用的信息? :-) – extraneon 2010-04-12 14:18:57