JTA和本地交易有什么区别?
JTA和本地交易有什么区别?
显示何时使用JTA以及何时使用本地事务的示例将非常棒。
JTA
是用于pipe理Java事务的通用API。 它允许您以资源中立的方式启动,提交和回滚事务。 事务状态通常存储在TLS(线程本地存储)中,并且可以传播到调用栈中的其他方法,而不需要传递一些显式的上下文对象。 交易资源可以join正在进行的交易。 如果有多于一个资源参与这样的事务,则至less有一个资源必须是所谓的XA资源。
resource local transaction
是指您使用特定的单个资源使用其自己特定的API的事务。 这样的事务通常不会传播到调用栈中的其他方法,并且您需要传递一些显式的上下文对象。 在大多数资源本地交易中,不可能有多个资源参与相同的交易。
您将使用资源本地事务,例如Java SE中的低级JDBC代码。 这里的上下文对象由java.sql.Connection
的一个实例表示。 资源本地事务的其他例子是开发人员在2002年左右创build企业应用程序。由于事务pipe理器(由JTA使用)是昂贵的,封闭的来源和复杂的东西在那个时代设置,人们越来越便宜,更容易获得资源本地变种。
基本上每隔一个场景就可以使用JTA事务。 像TomEE(25MB)或GlassFish(35MB)这样的非常简单,小巧,免费和开源的服务器,JTA支持开箱即用。 没有什么可以设置,他们只是工作。
最后,像EJB和Spring这样的技术通过提供declarative transactions
使JTA更容易使用。 在大多数情况下,build议使用这些,因为它们更容易,更干净,更不容易出错。 EJB和Spring都可以使用JTA。
Java Transaction API(JTA)是允许在Java环境中跨多个XA资源完成分布式事务的Java企业版(Java EE)API之一。
对于Java SE应用程序,Transaction-type应该设置为“RESOURCE_LOCAL”,对于Java EE应用程序应该设置为“JTA”。 “RESOURCE_LOCAL”在部署在Tomcat上的某些Web应用程序上可能正常工作,但在glassfish环境下运行应用程序时可能会导致问题。
如果您正在处理分布式事务,则必须使用“JTA”作为事务pipe理器。
J2EE应用程序通过2个规范包含了支持DT
JTA —> Java Transaction API.highe级别的实现并始终启用
JTS —> Java事务服务。