我是新的Java在Web应用程序设计中,我惊讶有多少事情我现在不知道。
特别是我在理解servlet容器如何管理连接池类等资源时遇到了问题。有关连接池在servlet应用程序中的一些问题
假设我选择了一个共享库(比方说c3p0),我读到了有很多方法来使用和管理连接池类。
例如在很多例子中,我看到某个类(比方说ComboPooledDataSource)在servlet的init()方法中实例化,在这里我有点混乱。我的意思是,我认为连接池系统必须存在,并且对于需要连接的所有servlet具有单独的生命,否则它是没有意义的。所以我认为下面的类可能是一个线程,它从第一个调用init方法的servlet开始,然后它继续存在,直到有人不打断它。那是对的吗?如果不是它如何工作?
无论如何,一旦我开始这个类,它是否在上下文中的所有servlet之间共享(我指的是在init方法中调用它的所有servlet)?
其他示例通过在context.xml中定义连接池系统作为资源,然后任何需要连接的servlet只需通过JNDI访问它(JNDI是正确的?)。我所理解的(或者我认为的)是,在这种情况下,执行池系统的线程在应用程序启动时启动,每个servlet可以在需要时访问它。那是对的吗?
在这种情况下,我可以通过servlet或后台线程运行时修改连接池系统属性吗? (例如,如果我想根据请求数等统计函数更改连接数)
如果我想创建不同的池(例如,我想将数据库访问细分为N不同的数据库,或者我想使用不同的用户名访问)是否需要创建尽可能多的资源,以及我想要的不同类型的连接?
这两者之间是否有“更好”的方式,或者它们是否相同?
我认为你对[对象池](http://en.wikipedia.org/wiki/Object_pool_pattern)的目的有点困惑,连接池通常不会有*线程*。 –
是的我是,那是因为我在问问题 – LJSilver
始终使用内置于您正在使用的应用程序服务器中的连接池。 –