目前我使用单独的DBConnectionManager类来处理连接池,但我也意识到这是错误的方式,因为每次doGet()时servlet都不会调用同一个池,被执行。针对Servlets的JDBC连接池
- 有人可以向我解释为什么会出现上述情况吗?
- JNDI是通过tomcat实现适当连接池的java servlets的方式吗?
我有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正确连接池?含义我将最大连接数设置为5,第6个请求进入,JNDI将尝试重新连接之前执行等待超时。 – Maurice 2012-02-10 09:10:54
JNDI本身不会进行池化,您可以查找一个['javax.sql.DataSource'](http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html)对象为您提供您需要连接时调用的getConnection()方法。如果没有可用的连接,则对getConnection()的调用将被阻止。注:每次需要连接时都不必查找JNDI数据源,因此将引用缓存到数据源是非常常见的做法。希望有所帮助。 – beny23 2012-02-10 09:27:20