Jakarta ee 业务逻辑:EJB与OSGi声明性服务

Jakarta ee 业务逻辑:EJB与OSGi声明性服务,jakarta-ee,osgi,Jakarta Ee,Osgi,我知道EJB实际上是企业应用程序中业务逻辑的标准。然而,osgi声明性服务可以做EJB做的很多事情。两者都由容器管理,都可以作为单例使用,都可以与CDI一起使用。我发现的区别是: EJB已经有RMI机制,但DS没有 EJB有线程池,但DS没有 DS可以只需要OSGi,但EJB需要JavaEE容器(例如,如果我们使用JavaEE容器开发独立应用程序将很困难。因为这将导致性能开销,或者需要从JavaEE实现中提取EJB容器(exm glassfish) 解释EJB作为标准使用的其他重要优势是什么 编

我知道EJB实际上是企业应用程序中业务逻辑的标准。然而,osgi声明性服务可以做EJB做的很多事情。两者都由容器管理,都可以作为单例使用,都可以与CDI一起使用。我发现的区别是:

  • EJB已经有RMI机制,但DS没有
  • EJB有线程池,但DS没有
  • DS可以只需要OSGi,但EJB需要JavaEE容器(例如,如果我们使用JavaEE容器开发独立应用程序将很困难。因为这将导致性能开销,或者需要从JavaEE实现中提取EJB容器(exm glassfish)
  • 解释EJB作为标准使用的其他重要优势是什么

    编辑:

    我问这个问题的原因如下-我们想开发一些既可用于SE平台又可用于EE平台的业务逻辑。这就是为什么DS似乎是一个更好的解决方案。然而EJB和DS是两个世界,我们担心遗漏一些重要的东西。

    我在Apachecon 2015上做了一次关于OSGi上的企业应用程序的演讲。它主要涉及DS和blueprint,因为JavaEE支持在OSGi上还没有完全准备好


    两者都不见。

    使业务逻辑不依赖于这两种技术中的任何一种,因为它们会限制您的选择,并且您已经知道需要在JavaSE上运行

    好的书面业务逻辑几乎没有依赖性,并通过单元测试进行了良好的测试

    生成的模块jar可用于javaee和OSGi。 如果需要同时支持这两种功能,则必须使用最少的一组通用功能

    解释EJB作为标准使用的其他重要优势是什么


    POJO也是标准的,但绝对不是复杂的方法。

    OSGi更适合定义应用程序的结构,而EJB更关心处理逻辑并让容器定义结构

    考虑到您的问题与在JEE和JavaSE应用程序EJB中使用业务逻辑有关,特别是考虑到OSGi JEE支持尚未就绪,EJB听起来是更好的选择


    实际上,我建议使用ESB,像骡子或WSO2,只需将共享服务器端的业务逻辑从java SE应用程序中提取出来。

    用非常简单的感知,可以将OSGi服务视为EJB光。(远程调用、管理安全上下文、池、事务等)。您可以在OSGi容器上实现相同的功能,但必须预先进行配置。投票关闭此功能主要是基于意见。StackOverflow不适用于流行度竞赛。而且所有这些观点都不正确。DS/OSGi有远程服务,请参阅规范。DS有线程池(只需定义一个
    @引用
    ExecutorService
    ,您就完成了)。最后,DS实际上不需要在OSGi上运行(尽管您为什么不呢?)@Neil Bartlett谢谢你的时间。但是你能不能不要投票结束,而是对这个问题给出一个完整的答案。因为我不是像你这样的OSGi专家,但我不同意DS/OSGi remote services=RMI。@JimJim2000你是对的,OSGi remote services远不止是RMI。不过,我不知道……这个问题的措辞似乎是因维在J2EE和OSGi倡导者之间进行激烈的争论。如果两种标准都有技术方面的问题(请记住,它们都是法律上的标准,而不仅仅是事实上的标准)如果您想澄清这一点,那么您可能想问一个关于这些方面的更尖锐的问题。OSGI在Java 9之后是否已经死亡?OSGI在Java 9上运行良好。我们目前正在许多项目中研究Java 11支持。