0

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

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

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

这使我认为可以通过包含在 AppControllerConfig 中来拦截连接打开/关闭机制:

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

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

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

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

4

1 回答 1

1

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

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

于 2016-08-10T15:08:16.627 回答