JTA是一种J2EE分布式事务框架,用于支持多数据源的分布式事务。
1、使用JTA,在应用服务器中配置的数据源必须是XA类型的,否则JTA不生效。
2、各大应用服务器都有JTA的实现。但tomcat不支持。
3、今天遇到了事务在异步情况下的问题。如果事务中的一部分在是在独立的线程中运行,那么。。。。目前还没找到好的办法,不知道是否是无解的。
下面的这些代码片断支持嵌套JTA事务
启动事务:判断事务如果是已经被激活的,就不启动新的事务
-
public
static
boolean
begin()
throws
TransactionException {
-
UserTransaction ut = TransactionFactory.getUserTransaction();
-
-
if
(ut !=
null
) {
-
try
{
-
if
(ut.getStatus() == TransactionUtil.STATUS_ACTIVE) {
-
Debug.debug("[TransactionUtil.begin] active transaction in place, so no transaction begun"
, module);
-
return
false
;
-
}
-
ut.begin();
-
-
return
true
;
-
} catch
(NotSupportedException e) {
-
-
throw
new
TransactionException(
"Not Supported error, could not begin transaction (probably a nesting problem)"
, e);
-
} catch
(SystemException e) {
-
-
throw
new
TransactionException(
"System error, could not begin transaction"
, e);
-
}
-
} else
{
-
Debug.debug("[TransactionUtil.begin] no user transaction, so no transaction begun"
, module);
-
return
false
;
-
}
事务提交:
-
public
static
void
commit(
boolean
beganTransaction)
throws
TransactionException {
-
if
(beganTransaction)
-
TransactionUtil.commit();
-
}
-
public
static
void
commit()
throws
TransactionException {
-
UserTransaction ut = TransactionFactory.getUserTransaction();
-
-
if
(ut !=
null
) {
-
try
{
-
int
status = ut.getStatus();
-
-
if
(status != STATUS_NO_TRANSACTION) {
-
ut.commit();
-
-
} else
{
-
-
-
}
-
} catch
(RollbackException e) {
-
-
throw
new
TransactionException(
"Roll back error, could not commit transaction, was rolled back instead"
, e);
-
} catch
(HeuristicMixedException e) {
-
-
throw
new
TransactionException(
"Could not commit transaction, HeuristicMixed exception"
, e);
-
} catch
(HeuristicRollbackException e) {
-
-
throw
new
TransactionException(
"Could not commit transaction, HeuristicRollback exception"
, e);
-
} catch
(SystemException e) {
-
-
throw
new
TransactionException(
"System error, could not commit transaction"
, e);
-
}
-
} else
{
-
-
Debug.debug("[TransactionUtil.commit] UserTransaction is null, not commiting"
, module);
-
}
-
}
使用事务:
-
public
void
changeState(String newState)
throws
fException, InvalidState, TransitionNotAllowed {
-
Connection conn = null
;
-
boolean
beganTransaction =
false
;
-
try
{
-
beganTransaction = TransactionUtil.begin();
-
conn = TransactionUtil.getConnection();
-
-
TransactionUtil.commit(beganTransaction);
-
} catch
(DAOException e) {
-
TransactionUtil.rollbackbeganTransaction);
-
} catch
(TransactionException e) {
-
TransactionUtil.rollbac(beganTransaction);
-
} finally
{
-
TransactionUtil.closeConnection(conn);
-
}
-
}
分享到:
相关推荐
自动换行功能通过 jta.setLineWrap(true) 语句来实现。 五、结论 Java 实训心得报告旨在帮助学生掌握 Java WEB 开发技术,通过实训报告的编写和实现,学生可以更好地理解和掌握 Java 语言的各种特点和技术。
在本文中,我们将深入探讨JavaEE的基本构成、核心技术和学习心得。 JavaEE的学习分为多个部分,首先是基础服务,包括对平台的概述,如JavaEE的发展历程、架构、组件和服务。这部分还涉及开发环境的选择和应用服务的...
### Java自学心得详解 #### 一、安装JDK与环境配置 自学Java的第一步是安装JDK(Java Development Kit)。这是开发Java程序的基础工具包,包含编译、运行Java程序所需的组件。 - **CLASSPATH问题**:理解...
### 韩顺平servlet与jsp_笔记与心得 #### JavaEE概述 JavaEE(Java Platform, Enterprise Edition)是一个开放式的平台标准,为开发者提供了丰富的API和工具集,以便构建高质量的企业级应用。JavaEE的核心是围绕着...
ORM技术允许开发者使用面向对象的方式来操作数据库,减少了对SQL的直接依赖。JPA支持XML和注解两种元数据形式来定义对象和数据库表的映射,提供API进行CRUD操作,还拥有自己的查询语言JPQL,类似于HQL(Hibernate ...
在实验中,你可能使用了注解来定义实体类,学习了如何配置数据源、实体管理器工厂和实体管理器,以及如何执行CRUD(创建、读取、更新和删除)操作。 Java Message Service (JMS) 是JavaEE中处理异步通信的标准,常...
20. **AAAJTA (Java Authentication and Authorization Service for JTA)**:这可能是错误的缩写,正确的应该是JTA(Java Transaction API),它为Java应用程序提供了事务处理能力。 21. **AOP (Aspect-Oriented ...
10. **JTA (Java Transaction API)**:JTA提供了一种标准接口,用于处理分布式事务,确保数据的一致性和完整性。 11. **JAF (Java Authentication Framework)**:JAF是JAVA的安全框架,用于实现认证和授权。 12. *...
这份学习资料涵盖了30多个架构学习心得,旨在帮助读者掌握J2EE平台的核心技术和高级概念,同时深入理解开源架构的设计与实践。 J2EE(Java 2 Platform, Enterprise Edition)是Java平台上用于构建企业级应用的框架...
博主Tendyming在ITEYE博客上分享了他们的学习心得,这通常会包含代码示例、问题解析和项目经验。由于链接无法直接访问,我们可以根据常见的J2EE学习路径来探讨相关知识点。 1. **Servlet与JSP**:Servlet是Java实现...
- **事务管理**:Spring框架提供了对Java Transaction API(JTA)的支持,同时也支持本地事务。它还支持声明式事务管理,可以通过简单的XML或注解配置来管理事务,无需编写额外的代码。 #### 二、Struts框架简介及...
7. **J2EE面试技巧与心得**: - 了解并熟悉J2EE规范中的各种组件和接口,如Servlet、JSP、JMS、JTA等。 - 熟练掌握Java基础,包括面向对象、集合、异常处理等。 - 对于常见的设计模式有所了解,如单例、工厂、...
**OJB持久层框架概述** OJB(Object-Relational Bridge)是一个开源的...通过阅读《OJB简介.doc》和《OJB心得.txt》,你可以更深入地了解OJB的使用方法、最佳实践以及他人的经验分享,从而更好地掌握这个持久层框架。
- **社区互动**:设立论坛或聊天室,让玩家交流游戏心得,增强社区氛围。 - **支付与购买**:如果游戏内包含付费项目,需搭建支付接口,支持虚拟货币购买。 在实际开发中,还需要考虑性能优化、负载均衡、安全性、...
- 文本域,包括明文输入框`jta0`、密钥输入框`jta1`、子密钥流显示框`jta2`和密文显示框`jta3`。 - 通过Java Swing组件构建的图形用户界面,提供了直观的操作界面和良好的用户体验。 #### 结论与心得 通过对RC4...
JavaEE的核心特性包括:Servlets、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等。在本项目中,Servlets和JSP可能被用来处理HTTP请求,动态...
- **主要内容**:涉及Hibernate框架的使用方法、实践经验以及作者在Hibernate官方论坛上的交流心得。 - **定位区别**:不同于Hibernate官方参考文档(Hibernate Reference),本文档旨在为开发者提供一个学习和掌握...
从给定的文件信息来看,这是一篇关于个人学习J2EE的心得体会,虽然原文内容较为抽象且不易理解,但我们可以从中提炼出与J2EE相关的知识点,并结合标题和描述进行深入探讨。 ### J2EE简介 J2EE(Java 2 Platform, ...
例如,使用 `@TransactionManagement` 注解可以指定事务的管理策略。 ```java @TransactionManagement(TransactionManagementType.CONTAINER) public class MySessionBean { // ... } ``` - **编程式事务**...