我正在尝试获取一个配置为使用C3P0进行连接池的ActiveWeb/ActiveJDBC连接。
我知道Javalite提供的文档说每个事务将是一个打开/关闭的连接,但也提到我们可以通过以下方式打开数据源:
new DB("default").open( cpds );这让我想到,通过在AppControllerConfig上包含以下内容,可能会截获连接打开/关闭机制:
addGlobalFilters( new DBConnectionFilterTest("default", true) );..。其中,DBConnectionFilterTest是扩展DBConnectionFilter的自定义类,该类覆盖打开和关闭连接的之前/之后行为。数据源在构造函数中使用ComboPooledDataSource进行配置。
我很好奇是否有人对这种配置有什么见解,或者是否已经成功地将C3P0集成到了activeweb/activeJDBC?
到目前为止,我所做的最多的就是让C3P0启动。我在会话监视器中看到了5个连接,但activeweb在执行事务时仍会启动一个新连接。C3P0池没有移动。
发布于 2016-08-10 23:08:17
由于您要编写自己的筛选器来打开和关闭连接,因此不要忘记在请求完成后关闭连接。这会将连接返回到池中。查看DBConnectionFilter代码,特别是onException()和after()方法。如果由于某些原因您不关闭连接,ActiveWeb将尝试为您关闭连接,但会在日志中显示错误。
就我个人而言,我使用Tomcat的内置池。它在高负载的生产环境中执行时没有任何问题。然后,DBConnectionFilter的标准实现可以做到这一点。
https://stackoverflow.com/questions/38876223
复制相似问题