业务逻辑:EJB vs OSGi声明性服务

时间:2016-04-14 08:44:52

标签: java-ee osgi

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

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

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

3 个答案:

答案 0 :(得分:4)

我在Apachecon 2015上就OSGi上的企业应用程序进行了一次演讲。它主要涵盖DS vs blueprint,因为Java EE支持尚未在OSGi上完全准备就绪。您仍然应该找到主要的企业用例以及如何在DS中执行这些用例。

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

答案 1 :(得分:0)

<强>都不是。

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

良好的书面业务逻辑几乎没有依赖性,并且使用单元测试进行了充分测试。

结果模块jar可以用于Java EE和OSGi。 如果您需要同时支持两者,则必须使用最少的常用功能。

  

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

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

答案 2 :(得分:-1)

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

看到你的问题与在JEE和Java SE应用程序中使用业务逻辑有关,EJB听起来是更好的选择,特别是考虑到OSGi JEE支持还没有准备好。

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