2

我没有使用 Spring 的开发经验,因为我们是一家 Java EE 商店。但是,我们正在寻找一种在 Spring 上运行并应集成我们现有 Java EE 解决方案的解决方案来满足我们的需求。

在阅读了 Spring 3.0.5 文档之后,我仍然不确定如何将事务从 Spring 传播到 EJB。

例如,一个 Spring bean 会创建一个事务,将一些内容保存到一个数据库中,然后将事务交给我们的一个无状态会话 bean,后者(使用 JPA)将一些其他内容保存到另一个数据库中。并且所有这些都必须在同一个事务下运行,该事务是在将控制权返回给 Spring bean 时提交的。

另外,我不清楚部署:Spring 会在包含会话 bean 的 EAR 中作为 web 应用程序运行吗?

4

1 回答 1

4

如果您将 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/>

我实际上只是反过来做了(在春天加入 EJB 事务)所以我不完全确定,但你可以通过设置轻松地测试它

@TransactionAttribute(TransactionAttributeType.MANDATORY)

在你的 SessionBean 上并从春天调用它......如果没有现有的 Transaction 你最终会得到一个TransactionRequiredException

于 2012-06-13T13:49:42.887 回答