业务逻辑:EJB 与 OSGi 声明式服务

Business logic: EJB vs OSGi declarative services

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

  1. EJB 已经有 RMI 机制但 DS 没有。
  2. EJB 有线程池但 DS 没有
  3. DS 可能只需要 OSGi,但 EJB 需要 JavaEE 容器(例如,如果我们使用 JavaEE 容器开发独立应用程序将很困难。因为它要么导致性能开销,要么必须从 JavaEE 实现中提取 EJB 容器(exm玻璃鱼)。

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

编辑:
我问这个问题的原因如下——我们想开发一些可以同时用于 SE 和 EE 平台的业务逻辑。这就是为什么 DS 似乎是更好的解决方案。然而EJB和DS是两个世界,我们怕错过重要的东西。

我在 Apachecon 2015 上做了一个关于 OSGi 上的企业应用程序的演讲。它主要涵盖 DS 与蓝图,因为 Java EE 支持在 OSGi 上尚未完全准备好。您仍然应该找到主要的企业用例以及如何在 DS 中执行它们。

http://www.slideshare.net/ChristianSchneider3/osgi-productivity-compared-on-apache-karaf

都没有。

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

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

并且生成的模块 jar 可用于 Java EE 和 OSGi。 如果您需要同时支持两者,则必须使用最少的通用功能集。

What are other important advantages of EJB explaining its using as standard?

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

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

鉴于您的问题与在 JEE 和 Java SE 应用程序中使用业务逻辑有关,EJB 听起来是更好的选择,尤其是考虑到 OSGi JEE 支持尚未准备就绪。

实际上,我实际上建议使用像 mule 或 WSO2 这样的 ESB,并且只具有将在服务器端共享的业务逻辑,从您的 Java SE 应用程序中提取出来。