这是相应的文档。该博客提供了一个代码示例,如何在 Grails 中延迟创建 DataSource ......并且可以在这样的代码中使用 C3P0。
由于 Grails 默认附带 DBCP,当可以将配置委托DataSource
和池化配置到底层容器(例如 Tomcat 或老板。所以我推荐这种方式,这里是一个如何为 Tomcat DataSource 设置 C3P0的示例,只需将其 jar 添加到lib
目录中。
现在,在配置多个数据源时,您应该注意 Grails 中缺少两阶段提交支持的部分。
如果您希望对来自两个 DataSource 的连接所做的操作包含在单个事务中(如果成功则同时提交,如果失败则回滚),则必须使用 XA 事务管理器。
在这种情况下,我建议您在 JBoss 中部署并在 JBoss 本身中配置 DataSources 和 pooling,JDBC 驱动程序必须安装在 JBoss 库中。
您将获得附带的 XA 事务管理器的好处。在 Grails 方面,DataSource 被配置为查询在您的 WAR 文件中resource-ref
声明的 JNDI 条目WEB-INF/web.xml
和WEB-INF/jboss-web.xml
文件。
dataSource {
jndiName = "java:comp/env/myDataSource"
}