下面给出了回滚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());
}
}
分享到:
相关推荐
在提供的"SimpleDemo"示例中,可能包含了一个简单的JTA事务管理的例子,比如如何在Java代码中启动和结束一个事务,以及如何在事务中操作数据库。具体实现细节可能包括使用JPA、JDBC或其他持久化框架与JTA集成的方法...
5. **XADataSource**:这是JDBC驱动的一种扩展,它实现了`XAResource`接口,允许数据库连接参与到JTA事务中。在描述中提到了`mysql-connector-java`,这意味着我们将使用MySQL数据库,并且其JDBC驱动支持JTA。 在...
使用JTA-1.0.1B.jar,开发者可以编写无感知事务的代码,即业务逻辑不直接处理事务的开始、提交和回滚,而是由容器自动管理。这种方式提高了代码的可维护性和可移植性,同时也简化了事务处理的复杂性。 然而,需要...
无论是使用JDBC事务还是JTA事务,都需要首先创建`Session`实例,并通过该实例开启事务。例如: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); ...
在传统的Java SE环境中,JTA事务管理可能比较复杂,而Atomikos的出现,使得即使在非Java EE服务器上,也能轻松地获得JTA事务的支持。 Atomikos的核心功能包括全局事务协调、事务恢复和事务监控。它支持多种数据源,...
然而,单一的JDBC连接无法处理跨多个数据库实例的事务。Atomikos Transactions JDBC通过提供一个事务协调器,使得应用能够通过单一的API调用来管理和控制跨数据库的事务。 3. **核心功能** - **全局事务管理**:...
在Java中,主要有两种方式处理事务:JDBC事务管理和JTA(Java Transaction API)事务管理。 **JDBC事务管理**:适用于小型应用或简单的事务需求。你可以通过Connection对象来开启、提交和回滚事务。例如: ```java...
分布式事务处理的实例中,JMS和JDBC数据库连接池等资源都需要实现和配置支持XA协议。这样,JTA才能透明地将这些资源纳入到事务处理中,提供跨数据源的事务一致性保障。 文档中提到的IBM Bluemix是一个基于云的开发...
总结来说,"atomikos-jta-jdbc-jms-example" 是一个展示如何在 Spring 应用中利用 Atomikos 来管理和协调涉及 JDBC 数据库和 JMS 消息的分布式事务的实例。这个示例有助于开发者理解和实践在 Java 环境下实现高可用...
在WebLogic 8中,JTA为开发者提供了简单易用的事务管理方式,它允许开发者通过简单的API调用来控制事务的开始、提交和回滚等操作。这对于那些需要处理分布式数据访问的应用程序来说至关重要。例如,在电子商务应用...
5. **配置JTA**:在web.xml中配置Spring的DispatcherServlet,并启用JTA事务管理。例如: ```xml <listener-class>org.springframework.web.context.ContextLoaderListener <param-name>...
SQL Server 与 Java 连接操作 SQL Server 是一个 ...JDBC 事务和 JTA 事务都是实现 Java 应用程序与数据库之间的事务处理的重要机制。通过了解这两种事务机制,可以更好地实现 Java 应用程序的可靠性和可扩展性。
`PlatformTransactionManager`接口是所有事务管理器的基类,如`DataSourceTransactionManager`用于JDBC事务,`HibernateTransactionManager`用于Hibernate事务,以及`JtaTransactionManager`用于JTA事务。...
8. **事务回滚和提交策略**:JOTM支持预提交和延迟提交策略,可以根据应用需求进行选择,优化性能。 为了更好地理解和使用JOTM,开发者需要了解以下几个关键概念: - **事务(Transaction)**:一个包含一组操作的...
7. **JDBC与JTA事务**:JDBC提供了一种在JTA环境中注册和管理事务的方法,通过`Connection#setAutoCommit(false)`禁用自动提交,并使用`UserTransaction`接口来开始、提交和回滚事务。 8. **Hibernate中的JTA支持**...
在Hibernate中,如果需要进行跨多个资源的事务管理,如同时操作数据库和消息队列,那么JTA就变得非常重要。它提供了统一的API来管理事务的开始、提交、回滚以及参与者的注册,使得应用程序可以透明地处理分布式事务...
1) **对JDBC事务的支持**:Spring提供PlatformTransactionManager接口,以及对应的DataSourceTransactionManager实现,用于管理基于JDBC的事务。使用@Transactional注解可以声明式地开启和管理事务。 2) **对...
1. 对JDBC事务的支持:Spring通过PlatformTransactionManager接口和DataSourceTransactionManager类实现了对JDBC事务的管理,可以进行手动事务控制。 2. 对Hibernate/JPA事务的支持:Spring与ORM框架如Hibernate和...
JOTM还支持XAResource接口,这是一个标准接口,允许资源管理器(如数据库驱动)参与到JTA事务中。每个数据源的连接都需要包装成XAResource,以便JOTM能够跟踪和管理它们。 此外,JOTM提供了事务恢复机制,可以在...
与JTA相比,JDBC事务更适用于单一数据库的场景。使用JDBC事务时,需要显式地设置连接为非自动提交模式,并手动调用`commit()`或`rollback()`方法来控制事务的结束。 ##### 示例代码: ```java Connection conn = ...