繁体   English   中英

Servlet的JDBC连接池

[英]JDBC Connection Pooling for Servlets

当前,我正在使用一个单独的DBConnectionManager类来处理我的连接池,但是我也意识到这是错误的方法,因为每次执行doGet()时Servlet都不调用相同的池。

  1. 有人可以向我解释为什么会发生上述情况吗?
  2. JNDI是使用带有适当连接池的tomcat的Java servlet的方法吗?

我有2篇文章的链接,这是用servlet实现连接池的正确方法吗?

http://www.javaranch.com/journal/200601/JDBCConnectionPooling.html

http://onjava.com/onjava/2006/04/19/database-connection-pooling-with-tomcat.html

是否可以在上下文中保存数据库管理器对象,如下所示:

mtdb = (MTDbManager) context.getAttribute("MTDBMANAGER");
if (mtdb == null) {
            System.out
                    .println("MTDbManager is null, reinitialize MTDbManager");              

            initMTDB(config);
            context.setAttribute("MTDBMANAGER", mtdb);
        }

然后,我调用mtdb.getInstance()。getConnection(),它将始终引用该对象。

谢谢。

通常,最好的建议是将连接池留给应用程序服务器。 只需使用JNDI查找数据源,然后让应用程序服务器处理其余的数据即可。 这使您的应用程序具有可移植性(不同的应用程序服务器具有不同的缓冲机制和设置),并且最有可能是最有效的。

查看并使用C3P0,而不是滚动自己的解决方案: http : //sourceforge.net/projects/c3p0/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM