gpt4 book ai didi

java - 跨多个 Web 服务的交易

转载 作者:行者123 更新时间:2023-12-02 04:33:30 28 4
gpt4 key购买 nike

我有一个非常简单的问题。我正在重写非常旧的应用程序,它通过 DAO 对象直接访问数据库。由于没有业务层(该代码不是我的,并且非常反代码),因此在代码中的任何地方都使用connection.setAutoCommit(false)来启动事务。由于安全原因,我不得不重写该项目,因此它不使用数据库连接,而是在 J2EE 服务器端使用 webservices 和 hibernate/jpa(之前是独立应用程序,现在是 app+j2ee)。简单 - 我只是将 DAO/VO 对象移至 Web 服务服务器,并将 sql 重写为 hql,并将客户端中的 DAO 替换为 Web 服务客户端。

但是交易代码该怎么办呢?通常一笔交易一次 Web 服务调用。所以我需要一些机制(Web 服务中的参数?)来帮助我在多个 Web 服务调用中引用相同的 Hibernate 事务。这是完全错误的方法吗?我应该在服务器代码中移动事务吗?

最佳答案

我认为您应该使用 SessionBeans 作为 JAX-RS 服务公开,并让它们控制事务。如果您需要跨多个 Web 服务调用进行事务,只需定义一个新的 Web 服务,以及一个充当其他调用的外观的 EJB SessionBean。我认为实现您的建议(引用相同的 hibernate 事务)是一种不好的做法,而且我认为这甚至可能不可能。每个 WS 调用都是一个单独的线程,在不同的时刻,跨线程混合事务并不是一个好的做法。

关于java - 跨多个 Web 服务的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137466/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com