Java JTA中事务管理器的具体流程是什么
在阅读了很多关于JTA的博客之后,仍然有一些观点让我感到困惑 例如,我发现 博客提供了一幅图片来解释分布式事务组件之间的关系 这幅图似乎暗示Java应用程序可以直接访问资源管理器,在本例中,资源管理器就是JDBC驱动程序 但在我看来,Java应用程序只能访问事务管理器,对数据源的所有访问都由事务管理器控制 我的理解有问题吗Java JTA中事务管理器的具体流程是什么,java,database,transactions,jta,distributed-transactions,Java,Database,Transactions,Jta,Distributed Transactions,在阅读了很多关于JTA的博客之后,仍然有一些观点让我感到困惑 例如,我发现 博客提供了一幅图片来解释分布式事务组件之间的关系 这幅图似乎暗示Java应用程序可以直接访问资源管理器,在本例中,资源管理器就是JDBC驱动程序 但在我看来,Java应用程序只能访问事务管理器,对数据源的所有访问都由事务管理器控制 我的理解有问题吗 另一个困惑 因为我们可以像这样控制交易: xadatasourcexads; xaCon; xaRes资源; Xid-Xid; 连接con; 报表stmt; int r
另一个困惑 因为我们可以像这样控制交易:
xadatasourcexads;
xaCon;
xaRes资源;
Xid-Xid;
连接con;
报表stmt;
int ret;
xaDS=getDataSource();
xaCon=xaDS.getXAConnection(“jdbc_用户”、“jdbc_密码”);
xaRes=xaCon.getXAResource();
con=xaCon.getConnection();
stmt=con.createStatement();
xid=新的MyXid(100,新字节[]{0x01},新字节[]{0x02});
试一试{
开始(xid,XAResource.TMNOFLAGS);
stmt.executeUpdate(“插入测试表值(100)”;
end(xid,XAResource.TMSUCCESS);
ret=x制备(xid);
if(ret==XAResource.XA_OK){
提交(xid,false);
}
}捕获(XAE异常){
e、 printStackTrace();
}最后{
stmt.close();
con.close();
xaCon.close();
}
事务管理器只是一种方便的方式来完成上面我们可以手动完成的事情吗?您的示例只有一个资源,并且只能使用JDBC而不使用JTA执行 JTA是关于分布式事务的 也就是说 访问和更新两个或多个联网计算机资源上的数据 一个好的例子应该至少涉及两种资源: 2个不同的数据库 或
1个数据库和1个文件系统。如果我使用JTA,Java应用程序是否有权访问数据源?或者Java应用程序只需要访问事务管理器并让事务管理器控制数据源?我认为应用程序应该访问事务管理器(TM),因为TM的角色是协调不同的事务和不同的资源。