Java Tomcat7中的连接池

Java Tomcat7中的连接池,java,tomcat,tomcat7,connection-pooling,Java,Tomcat,Tomcat7,Connection Pooling,这是我当前的配置 <Resource name="jdbc/data" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/TABLE_NAME"

这是我当前的配置

 <Resource
    name="jdbc/data"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/TABLE_NAME"
    username="USER_NAME"
    password="PASSWORD" 
    initialSize="10"
    maxActive="50"
    suspectTimeout="120"
    minIdle="10"
    maxIdle="20"
    maxWait="1000"
    testOnBorrow="true"
    timeBetweenEvictionRunsMillis="30000"
    minEvictableIdleTimeMillis="60000"
    validationQuery="SELECT 1 FROM DUAL"
    validationInterval="40"
    removeAbandoned="true"
    removeAbandonedTimeout="100"
/>

这是在全球范围内,因此多个应用程序可以使用它。 我对参数有点困惑。我需要一些细节。 我的理解是

initalSize
池启动时创建的连接数

maxActive
一次最多可以激活50个连接

minIdle
10未使用连接时连接保持空闲,否则在
maxwait

maxIdle
20个连接可以存储为空闲

但当我启动tomcat服务器时,我可以看到30个空闲连接,这些连接将永远存在。为什么会发生这种情况?我错过什么了吗?根据我对连接池的理解,应该只创建10个连接,并且可以保持空闲模式。当你说

这是在全球范围内,因此多个应用程序可以使用它

你具体是什么意思?它是在GlobalNamingResources块的$CATALINA_BASE/conf/server.xml中还是在$CATALINA_BASE/conf/context.xml中

在$CATALINA_BASE/conf/server.xml块中定义资源标记将导致在整个服务器上只创建一个资源。然后,通过向上下文配置添加标记,可以将其共享给系统上部署的应用程序

在$CATALINA_BASE/conf/context.xml中定义资源将为部署到Tomcat实例的每个应用程序定义一次资源。因此,如果您部署了三个应用程序,您将得到三个独立的资源。这是一个猜测,但可能是您看到30个到数据库服务器的连接的原因。

true guess:-)我在$CATALINA_BASE/conf/context.xml中定义了一个资源