【问题标题】:Why Spring Bean is able to run in Tomcat Servlet Container but EJB not?为什么 Spring Bean 能够在 Tomcat Servlet Container 中运行而 EJB 不能?
【发布时间】:2019-03-29 09:27:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: java spring jakarta-ee ejb javabeans


    【解决方案1】:

    Spring bean 和 EJB 之间的区别不是太多,而是前面提到的如何管理

    普通的 EJBean 或 Spring bean 本身没有任何特殊的魔法或功能。相关功能在bean运行的环境中实现。

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

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

    所以 EJB / JavaEE 你需要单独管理这些东西,这就是为什么普通的 Tomcat 对 EJB 来说是不够的。您需要一个 J2EE 容器 来运行您的 EJB,例如 - TomEE 是具有 OpenEJB 和 Tomcat 的扩展,或者查看 Certified referencing runtimes 列表(大约在链接后面的 Wikipage 中间)。

    另见thisthis 或多或少相关。

    【讨论】:

    • 谢谢,我有一个问题。我可以在简单的tomcat服务器中在spring环境中运行EJBeans吗?
    • @j6wj1997 我不是关于差异的专家 - 甚至两者都使用过 - 但我知道 - 假设你的 bean 是由注释配置的 - 如果你添加 j2ee,Spring 在一定程度上支持 J2EE 注释-api 对您的项目的依赖。如果没有 - 拥有源代码 - 如果不支持,您还可以尝试将注释从 J2EE 转换为 Spring 注释。无论如何,您应该学习,自己尝试,如果您自己没有成功,请用适当的例子提出一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多