2016-04-14 76 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應用程序中提取出來。