标签: bonecp

在Grails 2.3.6中定义备用连接池

我知道,在Grails 1.X和Grails 2.X之间的某个时刻,默认的连接池库从更改commons-dbcptomcat-dbcp.

现在,我正在尝试将BoneCP或HikariCP配置为Grails应用程序的连接池库.

但是,我看到这个答案提供的解决方案可能只适用于Grails 1.X.

我也找到了这个Gist,但同样,我不知道它适用于哪个Grails版本.

那么,是否可以在Grails 2.3.6应用程序中定义自定义连接池?谢谢!

grails connection-pooling bonecp hikaricp

7
推荐指数
1
解决办法
1580
查看次数

Oracle JDBC驱动程序语句缓存与BoneCP语句缓存?

我正在使用Oracle JDBC驱动程序并评估BoneCP.两者都实现了语句缓存.

我问自己是否应该使用一个或另一个进行语句缓存.你怎么看?每种方式有哪些优点或缺点?

java oracle jdbc prepared-statement bonecp

6
推荐指数
1
解决办法
2711
查看次数

Heroku/Play/BoneCp连接问题

我在heroku上有一个使用play的应用程序.它工作时间最长,但最近我开始得到这个:

Caused by: java.sql.SQLException: Timed out waiting for a free available connection.
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) ~[hibernate-core-4.1.9.Final.jar:4.1.9.Final]
at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:503) ~[bonecp-0.7.1.RELEASE.jar:0.7.1.RELEASE]
Run Code Online (Sandbox Code Playgroud)

这是由

org.postgresql.util.PSQLException: FATAL: too many connections for role "ejmatdbwywaugk"
Run Code Online (Sandbox Code Playgroud)

现在这显然是一个连接泄漏,除了我正在使用JPA.em().Play示例永远不会关闭像这样获得的实体管理器.我尝试关闭它,但随后应用程序爆炸说实体经理已关闭.

有任何想法吗?

java heroku entitymanager bonecp playframework-2.0

6
推荐指数
1
解决办法
7790
查看次数

BoneCP抛出"SQLException:连接已关闭!" 批量插入MySQL时

我的任务是使用BoneCP和jOOQ以及Spring建立一个项目,但是我遇到了一些困难.在我的MySQL数据库中单独插入可以很好地工作,但使用190,000个对象需要大约20分钟,所以为了加快速度,我想一次使用100个批量插入.但是,这会引发以下异常:

org.springframework.transaction.TransactionSystemException: Could not roll back JDBC transaction; nested exception is java.sql.SQLException: Connection is closed!
   at org.springframework.jdbc.datasource.DataSourceTransactionManager.doRollback(DataSourceTransactionManager.java:288)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:849)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:826)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:496)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:266)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
   at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
   at com.theshahin.service.YmsLinkDataService$$EnhancerBySpringCGLIB$$b9b6e447.create(<generated>)
   at com.theshahin.integration.YmsLinkDataServiceTest.foo(YmsLinkDataServiceTest.java:76)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
   at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
   at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
   at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
   at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
   at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
   at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
   at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
   at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
   at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:309) …
Run Code Online (Sandbox Code Playgroud)

mysql spring spring-jdbc bonecp jooq

6
推荐指数
1
解决办法
2011
查看次数

如何使用BoneCP记录连接池数据

有没有人知道使用BoneCP来记录连接池数据(即打开和空闲数据库连接的数量)?使用我正在迁移的C3P0很容易实现(实际上这些信息默认记录在那里)但是看起来很难获得唱歌BoneCP.现在我在日志中看到的是原始SQL语句.

java database connection-pooling bonecp

5
推荐指数
1
解决办法
1536
查看次数

Play2.0返回"SQLException:等待免费可用连接超时".

我一直在使用Play 2.0.2来创建Java应用程序.几天我遇到了问题.在~100请求之后,服务器开始抛出此异常:

[[SQLException:等待免费可用连接超时.]]

我创建的新实例ConnectionDB.getConnection().我没有关闭Connection实例,因为每个请求只有一个实例,据我所知,Connection当活动TCP连接关闭时它会自动关闭实例.我试图增加db.default.connectionTimeout价值,100 seconds但它无法解决问题.然后我检查了活动的Postgresql连接,并且没有活动连接.我也重新启动了Postgresql,但它也无法解决问题.

现在解决这个问题的唯一方法是杀死Play20实例并启动一个新实例.

这是Play2.0创建的日志:

! @6cg9il6ki - Internal server error, for request [GET [AN URL]] ->

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[SQLException: Timed out waiting for a free available connection.]]
        at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1.jar:2.0.2]
        at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1.jar:2.0.2]
        at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor.jar:2.0.2]
        at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1.jar:2.0.2]
        at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor.jar:2.0.2]
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor.jar:2.0.2]
Caused by: java.sql.SQLException: Timed out waiting for a free available connection.
        at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:503) ~[bonecp.jar:0.7.1.RELEASE]
        at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:114) ~[bonecp.jar:0.7.1.RELEASE]
        at play.api.db.DBApi$class.getConnection(DB.scala:64) …
Run Code Online (Sandbox Code Playgroud)

java playframework bonecp playframework-2.0

5
推荐指数
1
解决办法
4041
查看次数

有没有一种方法可以在运行时重新加载Tomcat的连接池?

我的情况如下:

  • 我必须维护一个以Tomcat(6)作为Web服务器的服务器,上面有一堆Web应用程序。这些Web应用程序由其他人维护。我们的服务器已连接到另一个部门的数据库服务器,该服务器具有我们的Web应用程序需要显示的信息。如果没有适当的池化策略,我们的服务器很快就会陷入灾难。

  • 现在,我向所有人介绍了Pooling(我选择了BoneCP-0.7),我们将创建一个驻留在Tomcat全局JNDI Context上的单个池,并让每个人都从中获得连接。我想那应该可以解决问题。

我担心的是:如何完全控制此Pooling?我有一些要求:

  • 我想在运行时手动或以编程方式重新加载DataSource配置(将在需要时尝试连接到备份服务器)

  • 更改可以不时更改的连接数(最小,最大,空闲连接)

  • 保持Tomcat存活为佳

  • 我打算构建一个使用JMX来连接和检索信息的警报系统,并有一个按钮来重新加载Pool(我知道所有Pooling策略都具有某种恢复能力,但是其他DB服务器会定期崩溃,因此请手动重新启动连接是比较可取的)。

我想到了一些可能的解决方案:

  • 告诉Tomcat重新启动其全局JNDI上下文
  • 告诉Tomcat重新启动其DataSource对象
  • 告诉BoneCP重新启动其池,并在必要时重新创建连接
  • 重新启动Tomcat本身

我的问题是:

  1. 我可以安全地执行上述解决方案而不影响Tomcat(和其他Web应用程序)吗?
  2. 我是否应该这样做呢?(我想只是重新启动Tomcat)

tomcat connection-pooling java-ee bonecp

5
推荐指数
1
解决办法
2938
查看次数

无法在事务中间更改事务只读属性

我将 BoneCP 与 Postgresql 和 Spring JdbcTemplate 一起使用。当 JdbcTemplate 执行查询然后尝试关闭连接时,会出现以下异常:

org.postgresql.util.PSQLException:无法在事务中间更改事务只读属性。在 org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:725) 在 com.jolbox.bonecp.ConnectionHandle.setReadOnly(ConnectionHandle.java:1279) 在 com.jolbox.bonecp.ConnectionHandle.(ConnectionHandle.java:254)在 com.jolbox.bonecp.ConnectionHandle.recreateConnectionHandle(ConnectionHandle.java:273) 在 com.jolbox.bonecp.ConnectionHandle.close(ConnectionHandle.java:476) 在 org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java) :341)在org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)在org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)在org.springframework.jdbc.core。 JdbcTemplate.execute(JdbcTemplate.java:411) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464) 在 org .springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472) 在 org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)

由于它无法关闭连接,打开的连接达到最大连接数,然后应用程序变得无响应。

我没有设置任何与交易相关的属性。所以交易设置应该是默认的。我怎样才能解决这个问题?

依赖和配置:

boncp 0.8.0-rc1 postgresql 9.2-1002.jdbc4 spring-jdbc 3.2.1.RELEASE

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"        destroy-method="close">         <property name="driverClass" value="org.postgresql.Driver" />       <property name="jdbcUrl" value="jdbc:postgresql://127.0.0.1/mkayman" />         <property name="username" value="mkayman" />        <property name="password" value="" />       <property name="idleConnectionTestPeriodInMinutes" value="5" />         <property name="idleMaxAgeInMinutes" value="30" />      <property name="maxConnectionsPerPartition" value="5" />        <property name="minConnectionsPerPartition" value="2" />        <property name="partitionCount" value="2" …
Run Code Online (Sandbox Code Playgroud)

postgresql spring spring-jdbc bonecp

5
推荐指数
1
解决办法
4527
查看次数

MysqlConnectionPoolDataSource或c3p0之类的库?

MysqlConnectionPoolDataSource和C3p0,BoneCP或dbcp库之间的连接池有什么区别?我不明白为什么使用库,如果mysql连接器给出连接池.

connection-pooling jdbc c3p0 bonecp apache-commons-dbcp

5
推荐指数
1
解决办法
1783
查看次数

BoneCP和Hibernate

我目前正在将BoneCP集成到一个具有Hibernate的现有项目中,当我阅读BoneCP的手册时,我发现了这个:

如果您在Hibernate中直接使用此库(即没有DataSource,不推荐)

我开始想知道为什么会这样?有人可以向我解释为什么在Hibernate中直接使用BoneCP是不好的?

java database hibernate datasource bonecp

5
推荐指数
1
解决办法
1462
查看次数