【问题标题】:Spring remote services with a transaction context具有事务上下文的 Spring 远程服务
【发布时间】:2011-03-14 20:13:11
【问题描述】:


我有以下情况:
我有一个接口服务器,它侦听队列并接收来自“外部世界”的消息。然后该服务器调用“内部”业务服务,该服务又调用其他服务等等。
这些服务可以分别驻留在不同的机器上,并且可以为此进行集群化。
我需要跨越这些服务和机器的事务的概念。
我的开发堆栈包括 J2SE 环境中的 Spring (3.0.5) 和 JPA 2.0(后台休眠)。
我可以在没有应用服务器的情况下实现这一目标吗?假设我插入了一个外部 JTA 事务管理器(例如 atomikos)
我们选择使用 Spring 的原因有很多,最重要的是服务抽象、密集的 DI 以及无需繁重的应用程序服务器即可工作的能力。我知道我们可以在应用服务器中使用 spring,但如果有人推荐这个,我想听听为什么应该这样做,假设我可以放弃 spring 并使用所有应用服务器。

顺便说一句,只是为了让阅读这篇文章的人放心:是的,我们已经考虑过分布式事务的问题,但我们仍然认为我们需要这样的事务,因为这是服务的业务逻辑,它需要跨机器,因为一些服务会承受很大的压力。

提前致谢,
一泰

【问题讨论】:

标签: java spring jakarta-ee remoting application-server


【解决方案1】:

我们最终将 JBoss 与 Spring 结合使用。
JBoss 确实提供了 Spring 包含所有 DI 等所需的分布式事务。
我们仍然保持春天,因为我们觉得它的国际奥委会更清洁、更舒适。
有可能我们应该在 jboss 中使用 CDI,但这不在我们的考虑范围内。

【讨论】:

  • 嗨,Ittai,你能更详细地描述一下你的设置吗?你在使用 REST 服务吗?您的所有服务都在同一台机器(JBoss 服务器)上吗?您是否使用 JTA (UserTransaction) 开始/提交/回滚。
【解决方案2】:

我们使用 Spring 3 和 Atomikos 在生产中的 apache tomcat 和 oracle 数据库上进行分布式事务 (xa),所以这对我们来说是一个非常有用的设置。看看 atomicos spring 集成示例:

http://www.atomikos.com/Documentation/SpringIntegration

【讨论】:

  • 您能详细说明一下您的设置吗?您是否使用跨机器的分布式事务?或者只是跨同一台机器中的各种资源。前一个解决方案是我正在寻找的,在链接中我没有找到任何提及它
  • 您好,我们为不同的数据库分发事务,而不是为不同的tomcat。我们还没有使用 JMS 或 AMQP 进行通信,而是使用 Web 服务,并且我们不依赖那里的分布式事务。
猜你喜欢
  • 2018-07-02
  • 1970-01-01
  • 2015-01-19
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多