正在初始化Java的Web应用程序
问题描述:
我有一个简单的Web应用程序,有几个JSP页面,servlet和POJO的。我想在做任何请求之前初始化连接池。做这个的最好方式是什么?可以在应用程序首次部署时完成,还是必须等到第一次请求进入?正在初始化Java的Web应用程序
答
怎么样一个基本的servlet启动初始化连接池?
答
使用一个的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");
}
}
+0
你认为“哎呀”是一个有用的信息? :-) – extraneon 2010-04-12 14:18:57
请不要跟我重新标记被打乱。虽然你和我(以及其他人)知道它真的是拼写成'初始化',但接受的标签是'初始化'。 – MPelletier 2010-04-12 17:42:13