Bab*_*adi 37 java hibernate connection-pooling c3p0 jpa-2.0
我正在努力面对c3p0配置面临的问题.我上周发布了一个问题 - C3P0配置!在哪里和如何?,但没有收到答复.任何帮助表示赞赏.
Dom*_* D. 49
这是我正在使用的配置,它将资源保持在最低限度.当然,您需要定制应用程序以使用它所需的资源...
参考:http://www.mchange.com/projects/c3p0/index.html
testConnectionOnCheckin返回池时验证连接.testConnectionOnCheckOut虽然在使用之前确保活动连接,但是这样做太昂贵了.idleConnectionTestPeriod设置连接在测试之前保持空闲的时间限制.如果没有preferredTestQuery,默认值是DatabaseMetaData.getTables()- 这是数据库不可知的,虽然相对昂贵的调用,对于相对较小的数据库可能很好.如果您对性能有偏执,请使用特定于您的数据库的查询(即preferredTestQuery="SELECT 1")maxIdleTimeExcessConnectionsminPoolSize在活动激增之后,将把connectionCount带回来.下面的配置集池大小在3-20之间.空闲连接每5分钟重新测试一次,以保持活动状态.因为idleConnectionTestPeriod,这只会保持连接的最小数量.如果在4分钟标记处有超过3个连接,则会终止这些连接,从而将资源释放回最小值.
使用maxIdleTimeExcessConnections和idleConnectionTestPeriod否定需要maxIdleTime
<Context docBase="myapp" path="/myapp" reloadable="true">
<Resource description="My DB Datasource" name="jdbc/mydb"
auth="Container" factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
user="myuser" password="******"
minPoolSize="3"
maxPoolSize="20"
acquireIncrement="1"
driverClass="com.mysql.jdbc.Driver"
jdbcUrl="jdbc:mysql://localhost:3306/mydb"
testConnectionOnCheckin="true"
idleConnectionTestPeriod="300"
maxIdleTimeExcessConnections="240"
/>
</Context>
Run Code Online (Sandbox Code Playgroud)
最佳配置是设置 JPA 以使用容器环境来获取数据源。
这允许容器提供连接池,而不是直接将其配置到 JPA 项目中。
您没有指明您正在使用哪个容器环境。我几乎总是将 c3p0 与独立应用程序一起使用,例如 Java SE 桌面或服务器应用程序。我也将它与 Spring 框架一起使用。
当使用 Servlet (Tomcat/Jetty) 或应用程序服务器(例如 Glashfish 或 JBoss AS)等容器时,它们已经提供了数据源连接池实现,该实现通常不是 c3p0,但提供了等效功能。
我从未尝试过在 JPA 项目中配置连接池,因为这意味着编辑配置以针对需要运行的每个环境对其进行自定义。这是一个令人头痛的问题,因此最好为 JPA 部分提供在引导期间使用的数据源。
| 归档时间: |
|
| 查看次数: |
59819 次 |
| 最近记录: |