为什么 Spring Bean 可以 运行 in Tomcat Servlet Container 而 EJB 不能?

Why Spring Bean is able to run in Tomcat Servlet Container but EJB not?

很多网络资源都说SpringBean类似于EJB。 Spring bean 也作为 EJB 可以通过@Component、@Bean 和@Service 定义逻辑。

但是 EJB 不能 运行 在像 Tomcat 这样的 servlet 容器中。

EJB 和 Spring Beans 之间的主要区别是什么?

Spring bean 和 EJB 之间的区别不是很多,而是前面提到的 managed

普通 EJBeans 或 Spring beans 本身没有任何特殊的魔法或功能。相关功能在bean为运行.

的环境中实现

当你在 Tomcat 中 运行 Spring 应用程序时,你实际上 运行 一堆来自 Spring 框架的东西,使 Spring beans 工作因此,不仅是 bean,还有许多其他代码也会自动装配服务和组件等。

然而,当您使用 EJB 实现 JavaEE 时,您部署的所有内容仅包含您的业务代码和 bean,而不是像 Spring 那样具有 管理 逻辑的东西包括在内。

所以 EJB/JavaEE 你需要单独管理这些东西,这就是为什么简单的 Tomcat 对于 EJB 是不够的。您需要一个 J2EE 容器,例如您在其中 运行 您的 EJB - TomEE that is an extension having OpenEJB with Tomcat or see a list of Certified referencing runtimes(大约在 link 后面的 Wikipage 中间)。

另见this and this 或多或少相关。