我试图将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池没有移动。
答案 0 :(得分:1)
由于您正在编写自己的过滤器来打开和关闭连接,因此请不要忘记在请求完成后关闭连接。这会将连接返回到池中。
查看DBConnectionFilter代码,特别是方法onException()
和after()
。如果由于某种原因您不会关闭连接,ActiveWeb将尝试为您关闭它,但会在日志中抱怨。
就个人而言,我使用Tomcat的内置池。它在重负载下在生产环境中执行时没有任何问题。然后DBConnectionFilter
的标准实现就是这样做的。