`
a1520708
  • 浏览: 28121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JTA事务和普通JDBC事务回滚实例

    博客分类:
  • j2se
阅读更多
下面给出了回滚JDBC事务的代码示例:

Java代码
public void processT(String orders) {    
   Context initCtx = new InitialContext();    
   javax.sql.DataSource ds = javax.sql.DataSource)initCtx.lookup    
   (“java:comp/env/jdbc/OrdersDB”);    
   java.sql.Connection conn = ds.getConnection();    
   try{    
      conn.setAutoCommit( false ); //更改JDBC事务的默认提交方式    
       orderNo = createOrder( orders );    
      updateOrderStatus(orderNo, “orders created”);    
      conn.commit();//提交JDBC事务    
   }catch( Exception e ){    
   try{    
       conn.rollback();//回滚sJDBC事务    
        throw new EJBException(“事务回滚: “ + e.getMessage());    
   }catch( SQLException sqle ){    
     throw new EJBException(“出现SQL操作错误: “ + sqle.getMessage());    
}    
}    
}   

public void processT(String orders) {
	Context initCtx = new InitialContext();
	javax.sql.DataSource ds = javax.sql.DataSource)initCtx.lookup
	(“java:comp/env/jdbc/OrdersDB”);
	java.sql.Connection conn = ds.getConnection();
	
	try{
		conn.setAutoCommit( false ); //更改JDBC事务的默认提交方式
		orderNo = createOrder( orders );
		updateOrderStatus(orderNo, “orders created”);
		conn.commit();//提交JDBC事务
	}catch( Exception e ){
		try{
			conn.rollback();//回滚sJDBC事务
			throw new EJBException(“事务回滚: “ + e.getMessage());
		}catch( SQLException sqle ){
			throw new EJBException(“出现SQL操作错误: “ + sqle.getMessage());
		}
	}
}


下面给出了JTA事务代码示例:

Java代码
public void processOrder(String orderMessage) {    
	UserTransaction transaction = mySessionContext.getUserTransaction();
	//获得JTA事务    
	try{    
		transaction.begin();//开始JTA事务    
		orderNo = sendOrder(orderMessage);    
		updateOrderStatus(orderNo, “order sent”);    
		transaction.commit();//提交JTA事务    
	}catch(Exception e){    
		try{    
			transaction.rollback();//回滚JTA事务    
		}catch(SystemException se){    
			se.printStackTrace();    
		}    
		throw new EJBException(“事务回滚: “ + e.getMessage());    
	}    
}   
分享到:
评论

相关推荐

    使用JTA实现跨库事务

    在提供的"SimpleDemo"示例中,可能包含了一个简单的JTA事务管理的例子,比如如何在Java代码中启动和结束一个事务,以及如何在事务中操作数据库。具体实现细节可能包括使用JPA、JDBC或其他持久化框架与JTA集成的方法...

    java实现JTA简单例子

    5. **XADataSource**:这是JDBC驱动的一种扩展,它实现了`XAResource`接口,允许数据库连接参与到JTA事务中。在描述中提到了`mysql-connector-java`,这意味着我们将使用MySQL数据库,并且其JDBC驱动支持JTA。 在...

    jta-1.0.1B.jar

    使用JTA-1.0.1B.jar,开发者可以编写无感知事务的代码,即业务逻辑不直接处理事务的开始、提交和回滚,而是由容器自动管理。这种方式提高了代码的可维护性和可移植性,同时也简化了事务处理的复杂性。 然而,需要...

    详解Hibernate事务处理机制

    无论是使用JDBC事务还是JTA事务,都需要首先创建`Session`实例,并通过该实例开启事务。例如: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); ...

    Atomikos解决JTA事物用法实战

    在传统的Java SE环境中,JTA事务管理可能比较复杂,而Atomikos的出现,使得即使在非Java EE服务器上,也能轻松地获得JTA事务的支持。 Atomikos的核心功能包括全局事务协调、事务恢复和事务监控。它支持多种数据源,...

    atomikos-transactions-jdbc.jar.zip

    然而,单一的JDBC连接无法处理跨多个数据库实例的事务。Atomikos Transactions JDBC通过提供一个事务协调器,使得应用能够通过单一的API调用来管理和控制跨数据库的事务。 3. **核心功能** - **全局事务管理**:...

    JAVA100例之实例59 JAVA对事务的处理

    在Java中,主要有两种方式处理事务:JDBC事务管理和JTA(Java Transaction API)事务管理。 **JDBC事务管理**:适用于小型应用或简单的事务需求。你可以通过Connection对象来开启、提交和回滚事务。例如: ```java...

    JTA 深度历险 - 原理与实现.pdf

    分布式事务处理的实例中,JMS和JDBC数据库连接池等资源都需要实现和配置支持XA协议。这样,JTA才能透明地将这些资源纳入到事务处理中,提供跨数据源的事务一致性保障。 文档中提到的IBM Bluemix是一个基于云的开发...

    atomikos-jta-jdbc-jms-example:带有 Spring、JDBC 和 JMS 的 Atomikos JTA 示例

    总结来说,"atomikos-jta-jdbc-jms-example" 是一个展示如何在 Spring 应用中利用 Atomikos 来管理和协调涉及 JDBC 数据库和 JMS 消息的分布式事务的实例。这个示例有助于开发者理解和实践在 Java 环境下实现高可用...

    weblogic8上的jta编程说明(英文原版)

    在WebLogic 8中,JTA为开发者提供了简单易用的事务管理方式,它允许开发者通过简单的API调用来控制事务的开始、提交和回滚等操作。这对于那些需要处理分布式数据访问的应用程序来说至关重要。例如,在电子商务应用...

    spring+hibernate+jta demo

    5. **配置JTA**:在web.xml中配置Spring的DispatcherServlet,并启用JTA事务管理。例如: ```xml <listener-class>org.springframework.web.context.ContextLoaderListener <param-name>...

    sqlserver与java连接接操作

    SQL Server 与 Java 连接操作 SQL Server 是一个 ...JDBC 事务和 JTA 事务都是实现 Java 应用程序与数据库之间的事务处理的重要机制。通过了解这两种事务机制,可以更好地实现 Java 应用程序的可靠性和可扩展性。

    使用Spring的事务模板

    `PlatformTransactionManager`接口是所有事务管理器的基类,如`DataSourceTransactionManager`用于JDBC事务,`HibernateTransactionManager`用于Hibernate事务,以及`JtaTransactionManager`用于JTA事务。...

    基于Java的实例源码-开源事务管理器 JOTM.zip

    8. **事务回滚和提交策略**:JOTM支持预提交和延迟提交策略,可以根据应用需求进行选择,优化性能。 为了更好地理解和使用JOTM,开发者需要了解以下几个关键概念: - **事务(Transaction)**:一个包含一组操作的...

    跨多个数据库操作,同时连接多个的数据库,同时操作

    7. **JDBC与JTA事务**:JDBC提供了一种在JTA环境中注册和管理事务的方法,通过`Connection#setAutoCommit(false)`禁用自动提交,并使用`UserTransaction`接口来开始、提交和回滚事务。 8. **Hibernate中的JTA支持**...

    hibernate jdbc需要用的jar

    在Hibernate中,如果需要进行跨多个资源的事务管理,如同时操作数据库和消息队列,那么JTA就变得非常重要。它提供了统一的API来管理事务的开始、提交、回滚以及参与者的注册,使得应用程序可以透明地处理分布式事务...

    Java+And+数据库事务.pdf

    1) **对JDBC事务的支持**:Spring提供PlatformTransactionManager接口,以及对应的DataSourceTransactionManager实现,用于管理基于JDBC的事务。使用@Transactional注解可以声明式地开启和管理事务。 2) **对...

    JavaAnd数据库事务[整理].pdf

    1. 对JDBC事务的支持:Spring通过PlatformTransactionManager接口和DataSourceTransactionManager类实现了对JDBC事务的管理,可以进行手动事务控制。 2. 对Hibernate/JPA事务的支持:Spring与ORM框架如Hibernate和...

    使用JOTM实现分布式事务管理(多数据源)

    JOTM还支持XAResource接口,这是一个标准接口,允许资源管理器(如数据库驱动)参与到JTA事务中。每个数据源的连接都需要包装成XAResource,以便JOTM能够跟踪和管理它们。 此外,JOTM提供了事务恢复机制,可以在...

    不同的事务操作代码

    与JTA相比,JDBC事务更适用于单一数据库的场景。使用JDBC事务时,需要显式地设置连接为非自动提交模式,并手动调用`commit()`或`rollback()`方法来控制事务的结束。 ##### 示例代码: ```java Connection conn = ...

Global site tag (gtag.js) - Google Analytics