我没有Spring的开发经验,因为我们是一个Java EE商店。但是,我们正在寻找满足我们在Spring上运行的需求的解决方案,并且应该集成我们现有的Java EE解决方案。
在阅读Spring 3.0.5文档之后,我仍然不确定如何将事务从Spring传播到EJB。
例如,Spring bean会创建一个事务,将一些东西保存到一个数据库中,然后将事务移交给我们的一个无状态会话bean,它使用JPA将其他一些东西保存到另一个数据库中。所有这些必须在同一个事务下运行,该事务在控件返回到Spring bean时提交。另外,我不清楚部署:Spring是否会在包含会话bean的EAR中作为webapp运行?
答案 0 :(得分: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 Transaction),所以我不完全确定,但你可以通过设置
轻松测试它@TransactionAttribute(TransactionAttributeType.MANDATORY)
在你的SessionBean上并从spring调用它...如果没有现有的Transaction,你最终会得到一个TransactionRequiredException