【发布时间】:2011-08-19 04:45:48
【问题描述】:
我在 jboss 4.2.3 (redhat 4.3) 上的 *-ds.xml 中定义了两个数据源 两个数据源是相同的。只有 jndi-name 不同 每个定义 min=max=10
<xa-datasource>
<jndi-name>com.trax.hibernate.DataSource</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@localhost:1521:orcl10</xa-datasource-property>
<xa-datasource-property name="User"> xxxx </xa-datasource-property>
<xa-datasource-property name="Password"> xxxx </xa-datasource-property>
<min-pool-size>10</min-pool-size>
<max-pool-size>10</max-pool-size>
<prefill>true</prefill>
<blocking-timeout-millis>60000</blocking-timeout-millis>
<ih3e-timeout-minutes>15</ih3e-timeout-minutes>
<valid-connection-checker-class-name> org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker </valid-connection-checker-class-name>
<check-valid-connection-sql>select 1 from gtw_cust</check-valid-connection-sql>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<no-tx-separate-pools/>
</xa-datasource>
<xa-datasource>
<jndi-name>AuditTrail.DataSource</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@localhost:1521:orcl10</xa-datasource-property>
<xa-datasource-property name="User">xxxx</xa-datasource-property>
<xa-datasource-property name="Password"> xxxx </xa-datasource-property>
<min-pool-size>10</min-pool-size>
<max-pool-size>10</max-pool-size>
<prefill>true</prefill>
<blocking-timeout-millis>60000</blocking-timeout-millis>
<ih3e-timeout-minutes>15</ih3e-timeout-minutes>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<check-valid-connection-sql>select 1 from gtw_cust</check-valid-connection-sql>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<no-tx-separate-pools/>
</xa-datasource>
问题: 在 jmx-console 上,name=com.trax.hibernate.DataSource,service=ManagedConnectionPool,信息显示 20 个连接,而不是预期的 10 个。
我希望创建的连接的最大值为 10 (MaxSize)。 这里看起来实际连接数是 MaxSize 的两倍,并且连接被创建和销毁(40 个创建和 20 个被销毁)
我做错了什么?你怎么解释这个?
com.trax.hibernate.DataSource:
AvailableConnectionCount 20
ConnectionCount 20
MinSize 10
MaxSize 10
MaxConnectionsInUseCount 11
InUseConnectionCount 0
ConnectionCreatedCount 40
ConnectionDestroyedCount 20
AuditTrail.DataSource:
AvailableConnectionCount 10
ConnectionCount 10
MinSize 10
MaxSize 10
MaxConnectionsInUseCount 8
InUseConnectionCount 0
ConnectionCreatedCount 20
ConnectionDestroyedCount 10
【问题讨论】:
-
当仅部署数据源而不部署应用程序时,两个数据源会准确创建 MaxSize 连接。只有在部署应用程序时,第一个数据源会创建双 MaxSize 连接,因此它确实取决于应用程序如何使用数据源,尽管两个数据源都定义为 XA - oracle.jdbc.xa.client.OracleXADataSource
标签: sql jboss datasource jmx