java - 如何在 Spring 和 EJB 中使用相同的事务?

标签 java spring jakarta-ee

我没有 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/

相关文章:

java - org.slf4j.impl.StaticLoggerBinder.SINGLETON 错误

java - Spring Security - 检索用户 IP、浏览器信息和请求的页面

java - Spring 型材

java - Spring配置文件: which sintax?中的Bean引用

java - 基于多个参数的对象列表排序

jsf - 无法在基本 JSF 项目中找到 CDI BeanManager

java - 根据给定的纬度、经度和半径值在 Java 中查找最小和最大纬度和经度

java - 查找包含文本的元素

java - 不支持的 major.minor 版本 52.0 错误

java - DatabaseMetataData 看不到表