简体   繁体   中英

JDBC Connection Pooling for Servlets

Currently I'm using a separate DBConnectionManager class to handle my connection pooling, but I also realized that this was the wrong way to go as the servlet was not calling the same pool each time a doGet() is performed.

  1. Can someone explain to me why the above is happening?
  2. Is JNDI the way to go for java servlets with tomcat for proper connection pooling?

I have links to 2 articles, is this the correct way to implement connection pooling with servlets?

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

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

Is it possible to save the db manager object in the context like so:

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

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

And then I call mtdb.getInstance().getConnection() and it will always reference this object.

Thanks.

Generally, the best advice is to leave the connection pooling to the application server. Just look up the data source using JNDI, and let the application server handle the rest. That makes your application portable (different application servers have different pooling mechanisms and settings) and most likely to be most efficient.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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