我没有 Spring 开发经验,因为我们是一家 Java EE 商店。不过,我们正在寻找一种能够满足我们需求的解决方案,该解决方案在 Spring 上运行,并且应该集成我们现有的 Java EE 解决方案。
阅读 Spring 3.0.5 文档后,我仍然不确定如何将事务从 Spring 传播到 EJB。
例如,Spring bean 将创建一个事务,将一些内容保存到一个数据库中,然后将该事务移交给我们的无状态 session bean 之一,该 session bean(使用 JPA)将其他一些内容保存到另一个数据库中。所有这些都必须在同一个事务下运行,该事务在控制权返回到 Spring bean 时提交。另外,我不清楚部署:Spring 会作为包含 session bean 的 EAR 中的 Web 应用程序运行吗?
最佳答案
如果您将 Spring 配置为使用 JTATransactionManager,然后从 Spring 中调用 SessionBean,则该 Bean 实际上应该获取 Spring 创建的事务。看这里:http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#transaction-application-server-integration和描述的<tx:jta-transaction-manager/>
我实际上只是以相反的方式做了(在 Spring 加入EJB Transaction),所以我不完全确定,但你可以通过设置轻松测试它
@TransactionAttribute(TransactionAttributeType.MANDATORY)
在你的 SessionBean 上并从 spring 调用它...如果没有现有的事务,你最终会得到 TransactionRequiredException
关于java - 如何在 Spring 和 EJB 中使用相同的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015582/