2016-04-14 42 views
4

我知道EJB是业务逻辑的企业应用程序中的事实标准。但是,osgi声明式服务可以完成EJB所做的许多事情。两者都由容器管理,两者都可以用作单身人士,都可以与CDI一起使用。我发现的差异是:业务逻辑:EJB与OSGi声明式服务

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

它有什么用标准解释EJB的其他重要优势

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

+0

通过非常简单的理解,您可以将OSGi服务视为EJB轻量级。使用EJB,J2EE容器容器将为您提供很多支持(远程调用,管理安全上下文,池化,事务处理等)。您可以在OSGi容器上实现相同的功能,但您必须预先进行配置。 – gusto2

+2

投票结束这主要基于意见。 StackOverflow不适用于人气竞赛。 –

+0

无论如何,所有这些点都是不正确的。 DS/OSGi具有远程服务,请参阅规格。 DS有线程池(只需为'ExecutorService'定义'@ Reference',就完成了)。最后,DS实际上并不需要在OSGi上运行(但为什么不呢?)。 –

回答

0

都不是。

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

良好的书面业务逻辑将有很少的依赖性,并与单元测试进行了良好的测试。

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

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

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

-1

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

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

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