使用同一数据库驻留在同一服务器上的跨 Web 服务的原子事务
我们的架构由使用 Metro 根据 JAX-WS 规范开发的 Web 服务组成
。这些服务作为单独的 war 文件部署在单个 Glass Fish App 服务器上。所有
Web 服务在内部都使用单个数据库。数据访问层使用 Hibernate 实现,Spring 用于实现服务内部的事务。现在,当我们想要进行跨多个 Web 服务的事务时,可以采用哪些方法?
- 我们是否需要使用 JTA 还是可以避免使用 JTA?
- 我们需要使用 Metro 支持的 WS-AtomicTransaction 规范吗?
Our architecture comprises of Web Services developed on JAX-WS specification using
Metro. These services are deployed on a single Glass Fish App server as separate war
files.All web services internally use a single database.The datatacess layer is implemented using Hibernate and Spring is used for implementing transactions inside of the service. Now when we want to do a transaction that spans across multiple web services,what approaches are possible?
- Do we need to use JTA or can we avoid the same ?
- Will we need to use the WS-AtomicTransaction specification supported by Metro?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我正在回答我自己的问题,因为到目前为止还没有答案。不过,我会欣赏同样的观点。
我认为最好的架构是将每个 Web 服务视为单独的,并使用 WS-AtomicTransactions/WS-Coodrination 进行跨 Web 服务的事务。
当出于性能或其他原因需要将某些 Web 服务部署到不同的 glassfish 域或不同的服务器上时,这也会有所帮助。
在内部,这些 JAX-WS Metro 服务将使用 glassfish 上的 JTA 来实现 2PC。然而,这隐藏在地铁实施
Vipul Shah内部
I am answering my own question because no answers till now. However will appreciate views on the same.
I feel the best architecture would be treat each web service as separate and use WS-AtomicTransactions/WS-Coodrination for transaction across web services.
This will also help when some web services need to be deployed into different glassfish domains or onto different servers alltogether for performance or some other reasons.
Internally these JAX-WS Metro services will use the JTA on glassfish to implement a 2PC. However thats hidden inside Metro Implementation
Vipul Shah