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

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

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

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

另外,我不清楚部署:Spring是否在包含会话bean的EAR中作为webapp运行?

如果你将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和描述的

我实际上只是反过来(在spring加入EJB Transaction),所以我不完全确定,但你可以通过设置轻松测试它

 @TransactionAttribute(TransactionAttributeType.MANDATORY) 

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