【问题标题】:Atomic Transactions across web services residing on same server using same database使用相同数据库驻留在同一服务器上的跨 Web 服务的原子事务
【发布时间】:2011-08-06 06:51:12
【问题描述】:
我们的架构包括使用 JAX-WS 规范开发的 Web 服务
地铁。这些服务作为单独的战争部署在单个 Glass Fish 应用服务器上
文件。所有 Web 服务在内部使用单个数据库。数据访问层使用 Hibernate 实现,而 Spring 用于在服务内部实现事务。现在,当我们想要跨多个 Web 服务进行事务时,有哪些方法是可能的?
- 我们需要使用 JTA 还是可以避免使用?
- 我们是否需要使用 Metro 支持的 WS-AtomicTransaction 规范?
【问题讨论】:
标签:
hibernate
spring
jax-ws
java-metro-framework
acid
【解决方案1】:
我正在回答我自己的问题,因为到目前为止还没有答案。但是会欣赏同样的观点。
我觉得最好的架构是将每个 Web 服务视为独立的,并使用 WS-AtomicTransactions/WS-Coodrination 进行跨 Web 服务的事务。
当出于性能或其他原因需要将某些 Web 服务部署到不同的 glassfish 域或不同的服务器时,这也将有所帮助。
在内部,这些 JAX-WS Metro 服务将使用 glassfish 上的 JTA 来实现 2PC。然而,这隐藏在 Metro 实现中
维普尔沙阿