SOS 关于spring JTA事务回滚问题 不能回滚

flybirdlc 2008-12-27 03:02:06
spring.xml

<?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/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<!-- JTA Start -->
<!-- JOTM本地实例 -->
<bean id="jotm" class ="org.springframework.transaction.jta.JotmFactoryBean">
</bean>

<!-- jta事务管理 -->
<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotm">
</property>
</bean>
<!--XAPool配置,内部包含了一XA数据源,sqlserver数据库
   支持JTA事务的数据源,必须封装成XAPool-->
<bean id="sqlserver" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager" ref="jotm"/>
<property name="driverName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property name="url"
value="jdbc:microsoft:sqlserver://192.168.10.162:1433;DatabaseName=uf_sales" />
</bean>
</property>
<property name="user" value="sa" />
<property name="password" value="njgascw5" />
</bean>


<!--XAPool配置,内部包含了一XA数据源,oracle数据库
   支持JTA事务的数据源,必须封装成XAPool-->
<bean id="oracle" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager" ref="jotm"/>
<property name="driverName" value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.10.22:1521:orcl1" />
</bean>
</property>
<property name="user" value="crm" />
<property name="password" value="crm_itd3102" />
</bean>

<!--分别配置访问sqlserver、oracle数据源的Spring JDBC模板-->
<bean id="jtaOracleTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="oracle"/>
</bean>

<bean id="jtaSqlserverTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="sqlserver"/>
</bean>

<!-- jdbctemplate配置 -->
<bean id ="jdbcTemplate"
class ="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource"/>
</property>

</bean>


<!-- Datasource Setup UFDATA_111_2008-->


<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property name="url"
value="jdbc:microsoft:sqlserver://192.168.10.162:1433;DatabaseName=UFDATA_111_2008" />
<property name="username" value="sa" />
<property name="password" value="njgascw5" />

</bean>



<bean id="utfService"
class="com.together.sys.service.UtfServiceImpl">
<property name="jdbcTemplate">
<ref bean="jtaSqlserverTemplate" />
</property>

</bean>

<!-- 维护管理 -->
<bean id="integarService"
class="com.together.sys.service.IntegartionServiceImpl">
<property name="jdbcTemplate">
<ref bean="jtaOracleTemplate" />
</property>
</bean>


<!--跨数据库的JTA事务的业务类-->
<bean id="myService" class="com.together.sys.service.MyServiceImpl">
<property name="integarService" ref="integarService"/>
<property name="utfService" ref="utfService"/>
</bean>

<!-- 销售单管理 -->
<bean name="/invcoManage"
class="com.together.sys.action.InvcoAction">
<constructor-arg index="0" ref="operService" />
<constructor-arg index="1" ref="integarService" />
<constructor-arg index="2" ref="logService" />
<constructor-arg index="3" ref="typeService" />
<constructor-arg index="4" ref="smspriceService" />
<constructor-arg index="5" ref="utfService" />
<constructor-arg index="6" ref="datummService" />
<constructor-arg index="7" ref="whnumService" />
<constructor-arg index="8" ref="callfunService" />
<constructor-arg index="9" ref="myService" />
</bean>
<!-- 注解事务驱动 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
myservice.java



import com.together.sys.vo.SMS_SALEBILLVOUCH;
import com.together.sys.vo.SMS_SALEBILLVOUCHS;
import com.together.sys.vo.SaleBillVouch;
import com.together.sys.vo.SaleBillVouchs;
import org.springframework.transaction.annotation.Transactional;

public class MyServiceImpl implements MyService{

IntegartionService integarService;
UtfService utfService;

public IntegartionService getIntegarService() {
return integarService;
}
public void setIntegarService(IntegartionService integarService) {
this.integarService = integarService;
}
public UtfService getUtfService() {
return utfService;
}
public void setUtfService(UtfService utfService) {
this.utfService = utfService;
}
//@Transactional(readOnly=false)
public void addAllSaleBillVouch(String sql,SMS_SALEBILLVOUCH sms_sale,String uftsql, SaleBillVouch sale) {
integarService.insertSMS_SALEBILLVOUCH(sql, sms_sale);
utfService.insertSaleBillVouch(uftsql, sale);

}
//@Transactional(readOnly=false)
public void addAllSaleBillVouchs(String sql,SMS_SALEBILLVOUCHS sms_sales, String uftsql,SaleBillVouchs sales) {

integarService.insert1SMS_SALEBILLVOUCHS(sql, sms_sales);
utfService.insertSaleBillVouchs(uftsql, sales);

}

}

action


SaleBillVouch sbv = new SaleBillVouch();
sbv.setSbvid(sbvid);
sbv.setCsbvcode(csbvcode);
sbv.setCstcode("01");
sbv.setCvouchtype("01");
sbv.setCrdcode("erererererererwere");//违反约束
sbv.setCdepcode(cdepcode);
sbv.setCpersoncode(cpersoncode);
sbv.setCcuscode("11111");
sbv.setIexchrate(1);
sbv.setItaxrate(17);
sbv.setBretumflag(0);
sbv.setCmaker(cmaker);
sbv.setCinvalider("");
sbv.setCverifier("");
sbv.setCcusname("客户");
sbv.setCbustype(cbustype);
sbv.setCdlcode(cdlcode);
sbv.setCacounnter("");
sbv.setCchecker("");
sbv.setDdate(_ddate);
String sqlsbv = "insert into SaleBillVouch(SBVID ,cSBVCode,cSTCode,cVouchType,dDate,cRdCode,cDepCode,cPersonCode,cCusCode,iExchRate,"
+ "iTaxRate,bReturnFlag,cMaker,cInvalider,cVerifier,cBusType,cCusName,cDLCode,cAccounter,cChecker)"
+ " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//uservice.insertSaleBillVouch(sqlsbv, sbv);

myService.addAllSaleBillVouch(sqlslv, slv, sqlsbv, sbv);
...全文
394 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cndone 2011-12-27
  • 打赏
  • 举报
回复
<aop:config>
未设置
he3434 2011-09-01
  • 打赏
  • 举报
回复
同样的问题,求解
第1章:对Spring框架进行宏观性的概述,力图使读者建立起对Spring整体性的认识。   第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。   第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行讲解。   第4章:讲解如何在Spring配置文件中使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。   第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们还将对Spring容器一些高级主题进行深入的阐述。   第6章:我们从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的内核中,分析它的底层结构和具体实现。   第7章:对如何使用基于AspectJ配置AOP的知识进行了深入的分析,这包括使用XML Schema配置文件、使用注解进行配置等内容。   第8章:介绍了Spring所提供的DAO封装层,这包括Spring DAO的异常体系、数据访问模板等内容。   第9章:介绍了Spring事务管理的工作机制,通过XML、注解等方式进行事务管理配置,同时还讲解了JTA事务配置知识。   第10章:对实际应用中Spring事务管理各种疑难问题进行透彻的剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。   第11章:讲解了如何使用Spring JDBC进行数据访问操作,我们还重点讲述了LOB字段处理、主键产生和获取等难点知识。   第12章:讲解了如何在Spring中集成Hibernate、myBatis等数据访问框架,同时,读者还将学习到ORM框架的混用和DAO层设计的知识。   第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。   第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。   第15章:对Spring MVC框架进行详细介绍,对REST风格编程方式进行重点讲解,同时还对Spring 3.0的校验和格式化框架如果和Spring MVC整合进行讲解。   第16章:有别于一般书籍的单元测试内容,本书以当前最具实战的JUnit4+Unitils+ Mockito复合测试框架对如何测试数据库、Web的应用进行了深入的讲解。   第17章:以一个实际的项目为蓝本,带领读者从项目需求分析、项目设计、代码开发、单元测试直到应用部署经历整个实际项目的整体开发过程。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧