业务逻辑:EJB 与 OSGi 声明式服务
Business logic: EJB vs OSGi declarative services
我知道 EJB 是企业应用程序业务逻辑的事实标准。然而,osgi 声明式服务可以做很多 EJB 可以做的事情。两者都由容器管理,都可以作为单例使用,都可以与 CDI 一起使用。我发现的差异是:
- EJB 已经有 RMI 机制但 DS 没有。
- EJB 有线程池但 DS 没有
- 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 应用程序中提取出来。
我知道 EJB 是企业应用程序业务逻辑的事实标准。然而,osgi 声明式服务可以做很多 EJB 可以做的事情。两者都由容器管理,都可以作为单例使用,都可以与 CDI 一起使用。我发现的差异是:
- EJB 已经有 RMI 机制但 DS 没有。
- EJB 有线程池但 DS 没有
- 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 应用程序中提取出来。