我有一个简单的 web 应用程序,带有一些 jsp 页面、servlet 和 pojo。我想在发出任何请求之前初始化连接池。做这个的最好方式是什么?可以在首次部署应用程序时完成,还是必须等到第一个请求进来?
Deano
问问题
1804 次
2 回答
9
使用 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");
}
}
于 2008-11-22T16:23:39.897 回答
0
用于初始化连接池的基本启动 servlet 怎么样?
于 2008-11-22T15:59:48.480 回答