浏览 4004 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-09-10 关键字: jta ibatis spring atomikos mysql jotm hibernate
9.17 update:使用NonXADataSourceBean. Mysql在5.0版本和Connecter/J5.0版本后提供了XADatasource支持,如果使用了支持XADatasouce版本,可以参考2楼补充.
最近做的project中遇到要将数据库中的表分布到两台不同的服务器上的Mysql5.0中,project主要使用spring+ibatis。因此需要JTA的支持,但是tomcat不支持,所以就搜索开源的JTA实现。 最开始使用的是JOTM,但是使用中不能自动rollback,无论什么情况都commit。然后看到infoq上一篇文章提到Atomikos Transactions Essentials,Atomikos Transactions Essentials 3.0是Atomikos 开发的核心事务引擎,支持JDBC 以及JMS 的JTA/XA 事务。易于部署,轻量级,同时支持JDBC 以及JMS 。 Atomikos Transactions Essentials现在的版本是3.1.7,可以在http://www.atomikos.com/home.html下载,在发布包里的examples文件夹下面有些例子,非常实用,我在使用中参考里面的例子很容易配置成功。先将发布包里面dist目录下的atomikos-util.jar,transactions.jar,transactions-api.jar,transactions-jta.jar copy到项目lib里面, 如果使用hibernate则需要将另外两个hibernate相关的jar页copy到项目里面,spring配置文件如下: xml 代码
事务的配置, 使用了spring2.0的语法,所以将namesapce也帖出来了. xml 代码
这样配置以后就可以使用分布式事务,测试中出现异常时事务也自动提交。和JOTM相比Atomikos Transactions Essentials更加稳定,它原来是商业项目,现在开源了。象mysql一样卖服务支持的。而且论坛页比较活跃,有问题很快可以解决。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-09-10
使用XADatasource的数据源配置
<!-- 第一个数据库 -->
<bean id="dataSource" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName">
<value>mysql/main</value>
</property>
<property name="xaDataSourceClassName">
<!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->
<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>
</property>
<property name="xaDataSourceProperties">
<value>URL=${jdbc.url};user=${jdbc.username};password=${jdbc.password}</value>
</property>
<property name="exclusiveConnectionMode">
<value>true</value>
</property>
<property name="connectionPoolSize">
<value>3</value>
</property>
<property name="validatingQuery">
<value>SELECT 1</value>
</property>
</bean>
<!-- 第二个数据库 -->
<bean id="dataSourceB" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName">
<value>mysql/news</value>
</property>
<property name="xaDataSourceClassName">
<!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->
<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>
</property>
<property name="xaDataSourceProperties">
<value>URL=${jdbc.url.b};user=${jdbc.username.b};password=${jdbc.password.b}</value>
</property>
<property name="exclusiveConnectionMode">
<value>true</value>
</property>
<property name="connectionPoolSize">
<value>3</value>
</property>
<property name="validatingQuery">
<value>SELECT 1</value>
</property>
</bean>
|
|
| 返回顶楼 | |
|
时间:2007-09-17
andyao 写道 core里面怎么有这么多span,编辑的时候没有。
已经修改好 |
|
| 返回顶楼 | |
|
时间:2007-09-30
不用SPRING2.0配置方法行吗
|
|
| 返回顶楼 | |
|
时间:2007-10-08
不用Spring也可以,直接编程使用.
|
|
| 返回顶楼 | |
|
时间:2007-11-25
我也使用了Atomikos Transactions做分布式事务,tomcat+hibernate+spring,事务能成功rollback,便在停tomcat时候老是有
错,错误信息如下: Exception in thread "Thread-14" java.lang.NullPointerException at com.atomikos.icatch.system.Configuration.removeResource(Unknown Source) at com.atomikos.jdbc.JtaDataSourceImp.close(Unknown Source) at com.atomikos.jdbc.DataSourceShutdownHook.run(Unknown Source) Exception in thread "Thread-6" java.lang.NullPointerException at com.atomikos.icatch.system.Configuration.removeResource(Unknown Source) at com.atomikos.jdbc.JtaDataSourceImp.close(Unknown Source) at com.atomikos.jdbc.DataSourceShutdownHook.run(Unknown Source) Unknown Source倒底是什么指资源? |
|
| 返回顶楼 | |
|
时间:2008-01-08
我最近也用JOTM做JTA,也发现不能rollback oracle数据库,后来发现使用的datasource是C3P0,好像C3P0是不支持XADATASOURCE的,后来我把C3P0换成XAPOOL,发现一切OK,能回滚了,查了C3P0的官方文档,发现它仅仅只是说它是对JDBC3和JDBC2的一些补充,没有提及XADATASOURCE方面的东西,估计就是不支持,我不确定
|
|
| 返回顶楼 | |
|
时间:2008-01-10
andycui 写道 我最近也用JOTM做JTA,也发现不能rollback oracle数据库,后来发现使用的datasource是C3P0,好像C3P0是不支持XADATASOURCE的,后来我把C3P0换成XAPOOL,发现一切OK,能回滚了,查了C3P0的官方文档,发现它仅仅只是说它是对JDBC3和JDBC2的一些补充,没有提及XADATASOURCE方面的东西,估计就是不支持,我不确定
C3P0不支持XADatasource. 而且使用数据库的时候也要使用数据库的XA驱动 |
|
| 返回顶楼 | |
|
时间:2008-06-18
Caused by: com.atomikos.icatch.SysException: Error in init(): Log already in use?
[17:03:01.375] at com.atomikos.icatch.standalone.UserTransactionServiceImp.init(Unknown Source) [17:03:01.375] at com.atomikos.icatch.config.UserTransactionServiceImp.init(Unknown Source) [17:03:01.375] at com.atomikos.icatch.jta.UserTransactionManager.checkSetup(Unknown Source) [17:03:01.375] at com.atomikos.icatch.jta.UserTransactionManager.init(Unknown Source) [17:03:01.375] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [17:03:01.375] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [17:03:01.375] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [17:03:01.375] at java.lang.reflect.Method.invoke(Method.java:597) [17:03:01.375] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1240) [17:03:01.375] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1205) [17:03:01.375] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171) [17:03:01.375] ... 90 more 这个错误难道各位都没遇到?奇了怪!这个问题在3.1之前是个bug,作者后来说要修复,但是我在3.2,3.3中都碰到了 |
|
| 返回顶楼 | |
|
时间:2008-07-15
引用 Caused by: com.atomikos.icatch.SysException: Error in init(): Log already in use?
[17:03:01.375] at com.atomikos.icatch.standalone.UserTransactionServiceImp.init(Unknown Source) [17:03:01.375] at com.atomikos.icatch.config.UserTransactionServiceImp.init(Unknown Source) [17:03:01.375] at com.atomikos.icatch.jta.UserTransactionManager.checkSetup(Unknown Source) [17:03:01.375] at com.atomikos.icatch.jta.UserTransactionManager.init(Unknown Source) [17:03:01.375] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [17:03:01.375] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [17:03:01.375] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [17:03:01.375] at java.lang.reflect.Method.invoke(Method.java:597) [17:03:01.375] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1240) [17:03:01.375] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1205) [17:03:01.375] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171) [17:03:01.375] ... 90 more 这个错误难道各位都没遇到?奇了怪!这个问题在3.1之前是个bug,作者后来说要修复,但是我在3.2,3.3中都碰到了 删掉项目里面的一个tm***.lck文件就可以了 |
|
| 返回顶楼 | |







