Spring TransactionManager 与 BoneCP 连接池的集成
我正在使用 BoneCP 连接池机制,我想使用 Spring 框架的支持来管理我的事务。我找到了一个关于Spring事务管理 我尝试应用这个例子。我从连接池中获取了一个 DataSource 实例,并将此数据源提供给创建的 DataSourceTransactionManager,如下所示。
DataSource dataSource = new BoneCPDataSource(getConnectionPool().getConfig());
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
但是当我测试它时,我看到事务管理器在提交操作之前已将数据写入存储。
是否与创建事务管理器之前创建新数据源有关?或者你有什么想法吗?
I'm using BoneCP connection pooling mechanism and I want to manage my transactions using support of the Spring framework. I found an example about Spring Transaction Management and I tried to apply this example. I got a DataSource instance from my connection pool and give this data source to created DataSourceTransactionManager as below.
DataSource dataSource = new BoneCPDataSource(getConnectionPool().getConfig());
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
But when I test it, I saw that the transaction manager has written the data to the store before commit operation.
Can it be related with creating a new data source before transaction manager is created? or do you have any idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了问题的原因。我使用的是 SDB RDF 存储组件。与SDB的add Triple方法的实现有关。我发现它直接调用了当前SQL连接的commit方法。 DataSourceTransactionManager 与 BoneCP 连接池集成没有问题。
I found the cause of the problem. I was using SDB RDF storage component. It is related with the implementation of the SDB's add triple method. I found that it directly calls the commit method of the current SQL connection. There is no problem about integrating DataSourceTransactionManager with BoneCP connection pool.