- 浏览: 376783 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
y806839048:
启动activemq我试了,也不行
ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息 -
y806839048:
是不是要另外启动activemq
ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息 -
y806839048:
为什么我的两个应用中,不能实现通信
ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息 -
fengfujie:
[flash=200,200][/flash][tr][th] ...
JMS消息类型模型 -
fengfujie:
...
JMS消息类型模型
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/Main/TransactionsEssentialsDownloadForm
下载,在发布包里的examples文件夹下面有些例子,非常实用,我在使用中参考里面的例子很容易配置成功。先将发布包里面dist目录下的atomikos-util.jar,transactions.jar,transactions-api.jar,transactions-jta.jar copy到项目lib里面, 如果使用hibernate则需要将另外两个hibernate相关的jar页copy到项目里面,spring配置文件如下:
- <!-- 第一个数据库 -->
- < 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 >
- < bean id = "lobHandler" class = "org.springframework.jdbc.support.lob.DefaultLobHandler" />
- <!-- 第一个数据库的sqlMapClient -->
- < bean id = "sqlMapClient" class = "org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
- < property name = "configLocation" >
- <!-- 包含第一个数据库表的map -->
- < value > classpath:/sqlmap-config.xml </ value >
- </ property >
- < property name = "dataSource" ref = "dataSource" />
- < property name = "lobHandler" ref = "lobHandler" />
- </ bean >
- <!-- 第二个数据库的sqlMapClient -->
- < bean id = "sqlMapClientB" class = "org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
- < property name = "configLocation" >
- <!-- 包含第一个数据库表的map -->
- < value > classpath:/sqlmap-configb.xml </ value >
- </ property >
- < property name = "dataSource" ref = "dataSourceB" />
- < property name = "lobHandler" ref = "lobHandler" />
- </ bean >
- <!-- Construct Atomikos UserTransactionManager, needed to configure Spring -->
- < bean id = "atomikosTransactionManager" class = "com.atomikos.icatch.jta.UserTransactionManager" init-method = "init"
- destroy-method = "close" >
- <!-- when close is called, should we force transactions to terminate or not? -->
- < property name = "forceShutdown" >
- < value > true </ value >
- </ property >
- </ bean >
- <!-- Also use Atomikos UserTransactionImp, needed to configure Spring -->
- < bean id = "atomikosUserTransaction" class = "com.atomikos.icatch.jta.UserTransactionImp" >
- < property name = "transactionTimeout" value = "240" />
- </ bean >
- <!-- Configure the Spring framework to use JTA transactions from Atomikos -->
- < bean id = "transactionManager" class = "org.springframework.transaction.jta.JtaTransactionManager" >
- < property name = "transactionManager" >
- < ref bean = "atomikosTransactionManager" />
- </ property >
- < property name = "userTransaction" >
- < ref bean = "atomikosUserTransaction" />
- </ property >
- </ bean >
事务的配置, 使用了spring2.0的语法,所以将namesapce也帖出来了.
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < beans xmlns = "http://www.springframework.org/schema/beans"
- xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop = "http://www.springframework.org/schema/aop"
- xmlns:tx = "http://www.springframework.org/schema/tx"
- xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
- default-autowire = "byName" default-lazy-init = "true" >
- <!-- 支持 @AspectJ 标记-->
- < aop:aspectj-autoproxy />
- < aop:config proxy-target-class = "true" >
- < aop:advisor pointcut = "execution(* *Facade.*(..))" advice-ref = "txAdvice" />
- < aop:advisor pointcut = "execution(* *Manager.*(..))" advice-ref = "txAdvice" />
- </ aop:config >
- < tx:advice id = "txAdvice" >
- < tx:attributes >
- < tx:method name = "get*" read-only = "true" />
- < tx:method name = "find*" read-only = "true" />
- < tx:method name = "has*" read-only = "true" />
- < tx:method name = "locate*" read-only = "true" />
- < tx:method name = "*" />
- </ tx:attributes >
- </ tx:advice >
- </ beans >
这样配置以后就可以使用分布式事务,测试中出现异常时事务也自动提交。和JOTM相比Atomikos Transactions Essentials更加稳定,它原来是商业项目,现在开源了。象mysql一样卖服务支持的。而且论坛页比较活跃,有问题很快可以解决。
评论
[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文件就可以了
[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中都碰到了

C3P0不支持XADatasource.
而且使用数据库的时候也要使用数据库的XA驱动

错,错误信息如下:
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倒底是什么指资源?
已经修改好
<!-- 第一个数据库 --> <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>
发表评论
-
Spring Milestone Maven Repository地址
2009-05-11 10:52 7938使用maven又想试用spring 3.0 m3的朋友可以用s ... -
HiddenHttpMethodFilter:自动转换Http Method
2009-03-29 11:21 5544REST的核心之一就是提供统一接口,也就是说对所有的资源(UR ... -
ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息
2008-08-28 18:21 33274ActiveMQ5.0实战一: 安装配 ... -
The smallwig theory of optimization
2008-04-17 09:49 1421There are three kinds of optimi ... -
ElementType.LOCAL_VARIABLE目前基本没用
2008-04-07 18:30 3966jdk5.0引入Annotation语法,@Target中的E ... -
Memcached java client 2.01发布
2008-04-05 21:39 2414com.danga.MemCached 发布2.0.1包括许多 ... -
Struts2中使用Stream Result Type
2008-04-05 18:25 18137Stream result type是Struts2中比较有用 ... -
NotSerializableException: EnhancerByCGLIB
2008-04-03 12:23 4346使用Ibatis时,为了获得更好的性能,我们一般都会将enha ... -
Pointcut命名有可能导致错误
2008-02-28 19:16 4362使用Spring @AspectJ方式的AOP,代码@Aspe ... -
异常通知:面向方面的模型
2008-02-28 15:16 2236原文:http://dev2dev.bea.com ... -
Sping容器加载xsd文件时的问题
2008-01-31 17:56 6409今天遇到一个非常奇怪的spring容器问题,先看日志]-303 ... -
关于memcached client的选择
2008-01-10 15:29 13575Memcached(http://www.danga.com/ ... -
Java确实不适合于作为主要编程教学语言
2008-01-10 12:12 1680最近米国那边又在讨论这个话题, 孟岩也发了一篇帖子http:/ ... -
Spring 2.5Annotation使用基本类型和${}
2008-01-08 19:08 2786最近使用了Spring2.5 annotation风格的DI, ... -
ActiveMQ5.0实战二: 基本配置
2008-01-08 17:33 12513/** *作者:andyao,email:andyaoy@gm ... -
JMS消息类型模型
2008-01-04 18:12 9663/**作者:andyao,email:andyaoy@gmai ... -
ActiveMQ5.0实战一: 安装配置ActiveMQ5.0
2008-01-05 18:03 10183/** *作者:andyao,email:andyaoy@gm ... -
Spring Annotation和XML风格的声明式事务
2008-01-04 14:02 5636/***作者:andyao,email:andyaoy@gma ... -
国际化异常消息
2007-12-21 14:26 3908/**作者:andyao,email:andyaoy@gmai ... -
Exception for Action
2007-12-17 16:31 1589原文:http://www.javaworld.com/ja ...
相关推荐
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。
内容概要:本文探讨了在工业自动化和物联网交汇背景下,构建OPC DA转MQTT网关软件的需求及其具体实现方法。文中详细介绍了如何利用Python编程语言及相关库(如OpenOPC用于读取OPC DA数据,paho-mqtt用于MQTT消息传递),完成从OPC DA数据解析、格式转换到最终通过MQTT协议发布数据的关键步骤。此外,还讨论了针对不良网络环境下数据传输优化措施以及后续测试验证过程。 适合人群:从事工业自动化系统集成、物联网项目开发的技术人员,特别是那些希望提升跨协议数据交换能力的专业人士。 使用场景及目标:适用于需要在不同通信协议间建立高效稳定的数据通道的应用场合,比如制造业生产线监控、远程设备管理等。主要目的是克服传统有线网络限制,实现在不稳定无线网络条件下仍能保持良好性能的数据传输。 其他说明:文中提供了具体的代码片段帮助理解整个流程,并强调了实际部署过程中可能遇到的问题及解决方案。
基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于C#实现的检测小说章节的重复、缺失、广告等功能+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档
少儿编程scratch项目源代码文件案例素材-火柴人终极之战.zip