具有C3P0数据库连接的Activeweb / ActiveJDBC

时间:2016-08-10 14:27:02

标签: datasource c3p0 activejdbc javalite activeweb

我试图将ActiveWeb / ActiveJDBC连接配置为使用C3P0进行连接池。

我知道Javalite提供的文档说每个事务都是一个打开/关闭的连接,但也提到我们可以通过以下方式打开数据源:

new DB("default").open( cpds );

这让我觉得可以通过在AppControllerConfig上包含拦截连接打开/关闭机制:

addGlobalFilters( new DBConnectionFilterTest("default", true)  );

...其中DBConnectionFilterTest是一个扩展DBConnectionFilter的自定义类,它覆盖打开和关闭连接的before / after行为。使用ComboPooledDataSource在构造函数中配置数据源。

我很好奇是否有人对此配置有任何见解,或者是否已成功将C3P0集成到activeweb / activeJDBC?

我到目前为止最远的地方是让C3P0启动。我在会话监视器中看到5个连接,但activeweb在执行事务时仍会启动新连接。 C3P0池没有移动。

1 个答案:

答案 0 :(得分:1)

由于您正在编写自己的过滤器来打开和关闭连接,因此请不要忘记在请求完成后关闭连接。这会将连接返回到池中。 查看DBConnectionFilter代码,特别是方法onException()after()。如果由于某种原因您不会关闭连接,ActiveWeb将尝试为您关闭它,但会在日志中抱怨。

就个人而言,我使用Tomcat的内置池。它在重负载下在生产环境中执行时没有任何问题。然后DBConnectionFilter的标准实现就是这样做的。