在使用ibatis初始化ActionServlet [init()方法]期间是否可以调用存储过程?
答案 0 :(得分:0)
是的,假设ibatis在ActionServlet.init
执行之前被初始化,如果你在ServletContextListener中初始化它将会是这样。
但是,我会考虑您是否应该在ActionServlet.init
的子类中进行应用程序初始化。我会在ServletContextListener的contextInitialized
方法的实现中实现它。
克雷格·麦克拉纳汉(Craig McClanahan)2002年的一篇文章解释了为什么这是更好的做法:
“原因是servlet规范不保证a servlet将被加载一次,然后在内存中保留整个生命周期 该应用程序,虽然原则上大多数容器都是大量的 请求的servlet。例如,容器完全合法 抛出Struts控制器servlet,然后再次重新初始化它, 在webapp的生命周期内,尽可能多次。
关于ServletContextListener的好处是你可以保证 contextInitialized()和contextDestroyed()仅在有时被调用 无论发生什么,你都需要它们(webapp启动和webapp关闭) 中间有servlet和JSP页面。但这仅适用于2.3 或更高版本的系统,其中添加了此API。“