项目连接分布式数据库之后,无法提交事务。求大神指点

问题描述

项目需要连接分布式数据库,采用了Atomikos3.7.0+spring3.2.0+hibernate4.2.0。目前能够连接到数据库,但是无法进行事务的提交,下面贴上配置:spring.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd"default-lazy-init="true"><!--从jdbc.properties中获取jdbc参数--><!--从genericCatch.properties获取需要异常捕获处理的controller的方法--><beanid="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname="locations"><list><value>classpath:/jdbc.properties</value></list></property></bean><importresource="mvc.xml"/><importresource="spring-dao.xml"/></beans>

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><!--数据源配置================开始====================--><beanid="dataSource"class="com.atomikos.jdbc.AtomikosDataSourceBean"init-method="init"destroy-method="close"><propertyname="uniqueResourceName"value="oracle/dgg_heshun"/><propertyname="xaDataSourceClassName"value="${jdbc.driverClassName}"/><propertyname="xaProperties"><props><propkey="URL">${jdbc.url}</prop><propkey="user">${jdbc.username}</prop><propkey="password">${jdbc.password}</prop></props></property><propertyname="poolSize"value="${cpool.minPoolSize}"/><propertyname="maxPoolSize"value="${cpool.maxPoolSize}"/><propertyname="testQuery"value="select1fromdual"/></bean><!--数据源配置================结束====================--><!--SessionFactory配置================开始====================--><beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!--dataSource属性指定要用到的连接池--><propertyname="dataSource"ref="dataSource"/><propertyname="packagesToScan"><list><value>com.jx</value></list></property><!--配置Hibernate的属性--><propertyname="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.OracleDialecthibernate.hbm2ddl.auto=updatehibernate.show_sql=truehibernate.format_sql=falsehibernate.temp.use_jdbc_metadata_defaults=false</value></property></bean><!--SessionFactory配置================结束====================--><!--分布式数据库事务管理================开始====================--><beanid="atomikosTransactionManager"class="com.atomikos.icatch.jta.UserTransactionManager"init-method="init"destroy-method="close"><propertyname="forceShutdown"value="true"/></bean><beanid="atomikosUserTransaction"class="com.atomikos.icatch.jta.UserTransactionImp"><propertyname="transactionTimeout"><value>300</value></property></bean><beanid="txManager"class="org.springframework.transaction.jta.JtaTransactionManager"><propertyname="transactionManager"ref="atomikosTransactionManager"/><propertyname="userTransaction"ref="atomikosUserTransaction"/></bean><tx:adviceid="advice"transaction-manager="txManager"><tx:attributes><tx:methodname="add*"propagation="REQUIRED"/></tx:attributes></tx:advice><aop:config><aop:pointcutid="point"expression="execution(*add*(..))"/><aop:advisoradvice-ref="advice"pointcut-ref="point"/></aop:config><!--分布式数据库事务管理================结束====================--></beans>

简单的包:启动时候看起来没有问题,在提交事务的时候,控制台打印了如下信息:16:53:46.419[http-bio-8080-exec-1]DEBUGorg.hibernate.SQL-selecthibernate_sequence.nextvalfromdualHibernate:selecthibernate_sequence.nextvalfromdual16:53:46.420[http-bio-8080-exec-1]DEBUGo.h.e.j.i.LogicalConnectionImpl-ObtainingJDBCconnection16:53:46.420[http-bio-8080-exec-1]INFOatomikos-AtomikosDataSoureBean'oracle/dgg_heshun':getConnection(null)...16:53:46.420[http-bio-8080-exec-1]INFOatomikos-AtomikosDataSoureBean'oracle/dgg_heshun':init...16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.421[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.447[http-bio-8080-exec-1]DEBUGo.h.e.j.i.LogicalConnectionImpl-ObtainedJDBCconnection16:53:46.447[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.447[http-bio-8080-exec-1]DEBUGatomikos-getCompositeTransaction()returningNULL!16:53:46.447[http-bio-8080-exec-1]INFOatomikos-atomikosconnectionproxyfororacle.jdbc.driver.LogicalConnection@4ecfe790:callingprepareStatement...16:53:46.460[http-bio-8080-exec-1]DEBUGorg.hibernate.id.SequenceGenerator-Sequenceidentifiergenerated:BasicHolder[java.lang.Long[84283]]16:53:46.462[http-bio-8080-exec-1]DEBUGo.h.e.i.AbstractSaveEventListener-Generatedidentifier:84283,usingstrategy:org.hibernate.id.SequenceGenerator网上找了很久没有好的办法,采用了注解方式来配置事务也没有用处,请各位帮忙看看到底问题出在哪里了

解决方案

解决方案二:
额。。我之前用aop配置事务也不生效后来用的注解我不知道你注解的话是如何配置的
解决方案三:
引用1楼darrenzhong的回复:

额。。我之前用aop配置事务也不生效后来用的注解我不知道你注解的话是如何配置的

如下:<!--定义Hibernate事务管理器--><beanid="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"/></bean><!--开启注解事务定义,由Spring扫描注解定义的事务--><tx:annotation-driventransaction-manager="transactionManager"/>

java代码里:@Transactional(propagation=Propagation.REQUIRED)publicinterfaceTestDmnextendsGenericDmn<Test,Long>{}

@Transactional(propagation=Propagation.REQUIRED,readOnly=true)publicinterfaceGenericDmn<T,IDextendsSerializable>{@Transactional(propagation=Propagation.REQUIRED)Tadd(Tentity)throwsBusinessException;}

这样配置之后,就没有打印信息了,但是依然无法提交事务
解决方案四:
有打印出数据库操作的sql日志吗
解决方案五:
引用3楼dokia123的回复:

有打印出数据库操作的sql日志吗

打印了:Hibernate:selecthibernate_sequence.nextvalfromdual但是没有insert语句。
解决方案六:
现在发现使用junit的时候,可以进行提交事务,但是使用web容器之后,就无法提交事务了。好像是tomcat要支持jta,需要加另外一个包,马上去试试。
解决方案七:
分布式事务你还采用本地事务管理器?改成JTATranscationManager,把tomcat改成应用服务器。
解决方案八:
楼主解决了没,我也遇到配置后事务不可用的情况。
解决方案九:
楼主,事务不提交的事情解决了没?
解决方案十:
引用7楼u010612285的回复:

楼主解决了没,我也遇到配置后事务不可用的情况。

我的这事务也没提交,你的解决了没?
解决方案十一:
同问……解决了,回一个……谢谢……
解决方案十二:
用hadoop或者MPP数据库吧,那个处理起来非常方便。

时间: 2024-10-07 09:33:09

项目连接分布式数据库之后,无法提交事务。求大神指点的相关文章

c#连接 oracle 数据库-asp.net 连接 oracle数据库出现的问题 求大神指教 急急急!!!

问题描述 asp.net 连接 oracle数据库出现的问题 求大神指教 急急急!!! 我的开发工具是vs2015 开发语言是C# 测试连接代码的时候出现了这样的错误 本地服务器数据库是 oracle 11G 求大神指教啊!!! 感激不尽. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.Web

java-将已有项目转移到sg_uap平台出现问题 求大神指点!

问题描述 将已有项目转移到sg_uap平台出现问题 求大神指点! 公司现在要将一个项目改用sg_uap平台开发,但出现了很多问题(对平台不了解),现在的问题是spring容器在初始化sessionFactory时Invocation of init method failed; 希望各路大神带我躺赢~!!!

web项目里怎么写一个对账功能求大神指点

问题描述 web项目里怎么写一个对账功能求大神指点 菜鸟 想问下web项目里怎么写个对账功能求给点思路 自己一点思路啊没有 解决方案 http://blog.csdn.net/fangkailove/article/details/4071656 解决方案二: 就是这样的需求要怎么写啊

关于WCF连接多个数据库的问题,求大神指点

问题描述 现在想实现不同的客户连接同一个WCF,WCF调用不同的数据库.比如,A客户连接WCF,WCF调用数据库DB_A.B客户连接WCF,WCF调用数据库DB_B.有没有大神有方案决绝这种问题,求大神指点 解决方案 解决方案二:没有问题吧,只要判断什么用户使用什么数据库即可.解决方案三:这个有什么问题吗?WCF是负责通信的解决方案四:引用1楼insus的回复: 没有问题吧,只要判断什么用户使用什么数据库即可. 现在不知道如何识别请求的客户是哪一个客户,只有知道是哪一个客户,才可以进行切换数据库

sql server-跨数据库同步数据的问题 求大神指点

问题描述 跨数据库同步数据的问题 求大神指点 我有两台服务器 一台是以sql身份验证用户名密码登陆的 内有两个在持续写入新数据的表1和2 两个表同时写入 具有相同的格式为datetime2(7)的列为主键 没有id列 另一台服务器是以windows身份验证登陆的 有一个表3 现在想要把表1的A B C三列的值.表2的D E两列的值同时分别插入到表3的b d f和c e列当中并且之后连续的将表1表2新增的数据插入 应该如何实现 解决方案 写两套连接 创建两个sqlsession 然后对两个不同库进

数据库+vb 急急急 求大神

问题描述 数据库+vb 急急急 求大神 vb用控件ado连接sql server数据库后怎么设计一个登录界面,求源代码..在线等,急...拜托大神赐教 解决方案 求 助(急急急!!!!!!!)急急急急急急 解决方案二: 别着急,赶快去找软件公司帮你开发吧.

急求大神指点下我在delphi写的这个数据库双表查询插入的问题

问题描述 急求大神指点下我在delphi写的这个数据库双表查询插入的问题 我要实现的是A任务表,B任务执行状态两表关联查询后,得到A表中能执行的数据,查询出来的结果确实是A表中能执行任务的数据, 但是在向B表中插入这条A表数据执行状态的时候,插入B表中的数据ID不是之前查询A表出来数据的ID, 下面附上代码,求大大们指点 //定义了任务运行表插入数据操作过程 procedure TForm1.InsertData(exeid,status,starttime,endtime,result : s

帮忙看一下,java连接数据的问题!!求大神帮忙

问题描述 帮忙看一下,java连接数据的问题!!求大神帮忙 解决方案 解决方案二: 解决方案三: 求大神帮忙啊!!!!!!!!!!!!!!!!!!! 解决方案四: 看你的jar包,你的sqlserver应该是2008版本,换个jar包,sqljdbc4 解决方案五: 应该是版本不对,或者driverStr写错了 解决方案六: buildpath里看下jar包添加了没有.如果添加了可以试一下把项目重新编译一下,再不行可能是版本不对,换个驱动包 解决方案七: 驱动类找不到,检查下你的驱动jar包有没

ftp服务器-毕设求大神指点!!题目是基于SaaS模式的分布式FTP服务器技术研究

问题描述 毕设求大神指点!!题目是基于SaaS模式的分布式FTP服务器技术研究 内容是: 目前,云计算正在各领域得到越来越多的应用,出现了多种云计算环境,掌握云计算的概念,熟悉相关云计算平台上的软件开发方法,对提高学生综合运用所学知识解决实际问题具有十分重要的现实意义.作为云计算平台之一的百度云,已得到了广泛应用, 本课题在理解FTP服务器模式的前提下,在saas环境下建立分布式的ftp服务,用户可通过ftp客户端传送数据. 该课题具有以下要求: 1. 了解云计算的基本原理,掌握基于saas的开

spring mvc-springmvc+mybatis+quartz的项目启动出错了,求大神指点

问题描述 springmvc+mybatis+quartz的项目启动出错了,求大神指点 看不懂什么情况,求大神指点下 jackson-mapper-asl严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Quart