先写个题目 前段时间看了看这些标准 其实就是定制的一系列的接口规则,然后那些框架其实就是利用这些来写,所以 这些貌似是基础中的基础 这段时间 来组织组织这些,呼呼 最近在看restlet,这就涉及到javaee中的JAX-WS JAX-RS 等等规范,不过 我还是想从 JTA 事务开始学起。。。。呼呼 这个是开篇,后续更新
说起事务,总是联想到Spring aop,或者就是@transaction标签,再或者就是各种框架的集成
今天从基本的开始说起,
首先是最基本的 JDBC 编程,一个数据源,我们可以用最基本的
conn.setAutoCommit(false)来开启 事务,最后调用conn.commit(); 来提交事务就可以了.
这是在一个数据源的情况下,如果我这边有两个数据库,从从不同的数据库来操作要保证事务呢
这时候就要用到J2ee标准中的 JTA 和 JTS 事务编程接口和事务服务
先不说理论,看看怎么用
userTx = (UserTransaction)getContext().lookup(" javax.transaction.UserTransaction"); // 从数据库 A 中取得数据库连接 connA = getDataSourceA().getConnection(); // 从数据库 B 中取得数据库连接 connB = getDataSourceB().getConnection(); // 启动事务 userTx.begin();
1.UserTransaction是 面向开发人员的接口
2.我们下面来看下JNDI怎么获取这个分布式事务管理器
//1.由于tomcat不支持JTA 所以 要引入JOTM来支持,这个搜一搜就好了,很多,这样,我们就配置完tomcat //和JTA 了。然后基本代码就是从JNDI中找到JTA 然后基本的 begin commit 就行了。。这是基本的 ,明天看//下String+JTA的整合
2 多说两句
上面写的UserTranscation 是用户接口,那当我们调用UserTranscation的时候,发生了什么事情呢
,这里就要说到JTA标准中的 三个接口 (1)userTranscation (2)TranscationManager(3) Transcation
简单的说 userTranscation调用begin的时候 然后调用transcarionManager,然后呢,TranscationManage里面有个threadlocal,这个就很明了了,每个线程都有自己的manager manager再调用Transcation的begin。好吧 其实就是这样,改天看看源码把这个贴上来。
------------------------------------我是分界线-----------------------------------------------
纸上谈兵终究是要一败涂地的
最新的Spring 3.0 已经不支持Jtom 所以上面的我就注释了 下面就直接看代码吧
<!-- 配置JTA 数据源 -->
<!-- 配置atomikos的事务管理器 -->
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<property name="forceShutdown" value="true" />
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
<!-- spring的JTA事务管理器 -->
<bean id="springTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="atomikosTransactionManager" />
<property name="userTransaction" ref="atomikosUserTransaction" />
</bean>
MAVEN 引入
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jta</artifactId>
<version>3.7.0</version>
</dependency>
再加上上面的配置 就能得到 一个事物管理对象了
@Autowired
JtaTransactionManager springTransactionManager;
简单看了下atomikos 的源码 思想和上面说的差不多 三个接口 userTranscation TranscationManager Transcation
不过 他们这里的 TranscationManager是自己实现了一个线程安全的方式 类似于一个threadlocal 不过是自己实现的BaseTransactionManager,其中就有hashtable 来分配线程
TransactionImp 这个就是真正执行事务的那个类了 具体的没怎么看了 具体实现还是比较复杂的。。。不过 现在我们已经得到了 UserTranscation这个开发人员接口了 接下来 就用就ok了
---------------
最后补充下 分布式事务可以再很多场合下使用,比如 JMS 中 来控制事务的完整性。。
接下来 我们就来看看JMS规范
相关推荐
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
《基于JavaEE的学生会服务与事务管理系统》是一个典型的Web应用程序,它使用JavaEE技术栈来构建,旨在管理和处理学生会的各项事务。这个系统不仅适用于学习和理解JavaEE平台的开发,也适合用作期末大作业的参考案例...
- JTA定义了分布式事务处理的API,JavaEE应用服务器通过JTA来管理跨越多个资源(如数据库和消息队列)的事务。 6. **JMS(Java Message Service)** - JMS是Java平台上的消息中间件标准,允许应用程序之间发送和...
本次我们将讨论一个基于JAVAEE的仓库管理系统,它是一个实现了基本功能的参考和学习项目。 **系统架构与技术栈** 1. **三层架构**:该仓库管理系统通常采用经典的MVC(Model-View-Controller)模式设计,分为表现...
7. **JTA(Java Transaction API)**:JavaEE提供了一套完整的事务管理机制,确保在分布式环境中数据的一致性。在图书管理系统的借阅、归还等操作中,可能涉及到多步操作,这时就需要JTA来保证事务的正确执行。 8. ...
6. **JTA (Java Transaction API)**:在处理数据库事务时,JTA提供了统一的事务管理接口,确保数据的一致性和完整性。 7. **JMS (Java Message Service)**:如果系统中涉及到异步处理或消息队列,如通知、日志记录...
JavaEE的核心技术包括但不限于JDBC(用于数据库连接)、JNDI(命名和目录接口)、EJB(企业JavaBean)、RMI(远程方法调用)、Java IDL/CORBA(接口定义语言和对象请求代理架构)、JSP(Java Server Pages)、...
5. **JPA (Java Persistence API)** 和 **Hibernate**:JPA是JavaEE的标准ORM(对象关系映射)规范,允许开发者用面向对象的方式操作数据库。Hibernate是JPA的一个实现,提供了更丰富的功能和更高的性能。 6. **...
在实际的项目中,开发者还会用到其他技术,比如JNDI(Java Naming and Directory Interface)进行资源查找,JTA(Java Transaction API)进行事务管理,以及CDI(Contexts and Dependency Injection)进行依赖注入,...
4. **JTA(Java Transaction API)**:JavaEE支持分布式事务处理,JTA允许在多组件间协调事务,确保数据的一致性。 5. **JPA(Java Persistence API)**或**Hibernate**:为了简化与数据库的交互,开发者可能使用...
8. **JTA(Java Transaction API)**:事务管理API,确保在分布式环境中的数据一致性。 9. **WebSocket**:提供双向通信协议,使得服务器和客户端可以实时交换数据。 10. **Java API for RESTful Web Services ...
4. **JTA (Java Transaction API)** 和 **JPA (Java Persistence API)**:JTA用于管理跨多个数据库操作的事务,确保数据一致性。JPA则为对象关系映射(ORM)提供标准接口,使得开发者可以使用面向对象的方式来操作...
6. **JTA(Java Transaction API)**:JavaEE支持分布式事务处理,JTA定义了事务管理的接口,确保在多组件操作中的一致性和完整性。 7. **JSF(JavaServer Faces)**:JSF是一种MVC(Model-View-Controller)框架,...
6. **JTA(Java Transaction API)**:JTA提供了分布式事务处理的标准,确保在多资源操作中的数据一致性。 7. **JMS(Java Message Service)**:JMS是Java消息服务规范,允许应用程序创建、发送、接收和读取消息,...
7. **JTA(Java Transaction API)**:JavaEE支持事务管理,JTA定义了如何在分布式环境中处理事务的一致性和隔离性。在简单项目中,可能涉及到单个数据库的本地事务管理。 8. **MVC架构模式**:模型-视图-控制器...
JTA(Java Transaction API)则是JavaEE提供的事务管理规范,它定义了如何在一个分布式环境中管理事务的开始、提交、回滚等操作。在多组件协作的复杂应用中,JTA确保了数据的一致性和完整性。 在开发过程中,如果...
接下来是JDBC(Java Database Connectivity)的学习,它是与数据库交互的标准API,涵盖了数据库连接的建立、查询和事务管理。JTA(Java Transaction API)则用于处理事务,确保数据的一致性和完整性。RMI(Remote ...
9. **JTA(Java Transaction API)**:处理分布式事务的API,确保在多组件操作中的数据一致性。 10. **JMS(Java Message Service)**:JavaEE的消息传递系统,用于异步通信和解耦应用组件。 这个"javaee大作业...
JavaEE平台通过EJB容器、JTA、JMS等技术提供了服务的集群、事务管理、消息服务等支持,这对于人力资源管理系统的可伸缩性和性能至关重要。尤其在企业规模扩大、数据量和用户量激增的情况下,系统仍需保持高可用性和...