带有Spring的EJB3

时间:2010-06-01 13:21:18

标签: java spring transactions ejb-3.0 autowired

我已经明白,如果我在Spring上下文中使用EJB,我会获得所有相同的好处,就像我在“纯”EJB3环境中使用它一样,这是真的吗?我用谷歌搜索,但找不到明确,明确的答案。

例如,假设我有一个会话bean来更新数据库中的某些表,它会引发系统异常。在“纯”EJB3环境中,事务被回滚。如果我使用Spring @Autowire这个bean,那么Spring会像EJB3容器一样处理事务处理吗?或者是什么?它可能需要一些特定的配置还是完全“自动”?

4 个答案:

答案 0 :(得分:6)

  

我已经明白,如果我使用EJB   Spring语境,我也一样   好像好像我正在使用它   “纯粹的”EJB3环境,这是真的吗?

您通常使用POJO + Spring EJB3。我对“春天的EJB”的含义感到有点困惑......

POJO + Spring和EJB3现在非常接近,并且在声明式事务管理方面具有相同的功能。

我不知道有关安全性的所有细节,但我会说两种技术也非常相似。

实际上Spring和EJB3都依赖于其他规范。重要的是:JPA(持久性),JTA(分布式事务),JMS(消息传递),JDBC(数据源)。两个技术堆栈中存在良好的支持。

这两项技术都变得非常灵活,您可以选择使用或不使用的技术。因此,您可以在应用程序中使用EJB3。服务器,非常轻。或者您可以将Spring与所有模块一起使用,这些模块几乎与完整的应用程序一样重。服务器

我认为EJB3模型仍然有点丰富,包括远程处理,有状态会话bean(SFSB),容器管理事务和扩展持久化上下文。此外,根据应用程序可能支持群集。服务器。但这些是很少使用的高级功能(IMO需要专业知识)。

请参阅EJB3 vs Spring

答案 1 :(得分:3)

spring有许多功能,其中一个是transaction management,它使用了所有不同orm实现(jpa,raw hibernate,jdbc,jdo等)的通用抽象。默认行为是在事务方法中,运行时异常导致回滚(这可能是您想要的),但您也可以fine-tune the rollback rules

但是,这些都不需要EJB。如果你不使用EJB(无状态,有状态,mdbs),JPA就足够了,spring jpa support非常好。在90%的情况下,spring将提供您无需EJB的所有内容。


编辑:

请阅读Spring EJB integration

答案 2 :(得分:2)

您可以拥有Spring句柄事务并相应地回滚。您必须对其进行配置才能执行此操作,但对于EJB也是如此。

生活中没有任何东西真正“自动”。你必须告诉代码你想要的东西。

真正的问题是:为什么你认为你需要EJB和Spring?您可以使用Spring的POJO完成使用EJB可以执行的任何操作。什么是EJB在这里买你?

答案 3 :(得分:2)

我得到了非常好的答案,链接到文章,从那些我编译了我的理解是,会话bean以相同的方式工作,无论它们是否与Spring一起使用或者没有,只要bean在带<jee:jndi-lookup>的Spring上下文。还找到了一篇关于此的简单文章:http://java.dzone.com/articles/ejb-30-and-spring-25

但是我不能接受一个答案,因为对我来说他们都同样好,但他们都没有完全相同:)可能是我的问题不够明确,不能开始......

(有人建议我发布这个作为我自己问题的答案)