我一直在使用Tomcat。但是我從來沒有讓自己完全瞭解它是如何工作的,特別是線程池和JDBC連接池。需要幫助理解Tomcat線程池和JDBC連接池
以一個標準的Spring Web應用程序(與c3p0連接池)爲例。我的問題是
當TC啓動時,它創建N個線程,每個都有一個 的applicationContext?
如果是這樣,是否意味着每個線程將擁有自己創建的bean實例列表 ?
一個bean定義的是
<bean id="dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${db.driverClassName}"/> <property name="jdbcUrl" value="${db.url}"/> <property name="user" value="${db.username}"/> <property name="password" value="${db.password}"/> <property name="minPoolSize" value="5" /> </bean>
這將創建5個JDBC連接創建這個bean時。這是否意味着我們會以
5個連接x N個線程= 5個連接?
這聽起來不對我。我認爲JDBC池是在所有線程中共享的。但顯然,JDBC池(定義爲ComboPooledDataSource bean)是作爲applicationContext的一部分創建的,對嗎?
太好了。你已經回答了我的問題。我認爲TC(不是Spring本身)創建了N個上下文,每個上下文都有一組Spring bean(c3p0連接池就是其中之一)。現在一切都很有意義:在所有線程中共享一個上下文。 – scabbage