2012-10-26 104 views
2

創建企業Java EE應用程序時,必須將部分業務邏輯(如消息傳遞(MDB))放入EJB模塊中。但是,有些EJB可以放在EJB模塊或Web模塊中。我知道分離模塊允許Web層和業務層部署在不同的機器上。因此,我會將我的@Stateful購物車EJB放入Web模塊中。然而,我想不出一個可以應用於每一項業務邏輯的標準標準,決定將EJB包含在哪裏。有沒有一個指導方針,標準或建議的做法呢?將業務邏輯放在Java EE企業應用程序中的位置

+0

你能說出這些'商業邏輯'嗎? – 2012-10-29 08:08:15

+0

- 處理通過消息收到的外部應用程序的報告,同時將它們推送到Web界面(通過Web界面進行實時監控)並將結果保存到數據庫。 - 我在問題中提到的購物車示例,以及處理從Web界面收集哪些詳細信息的客戶訂單。 - 基於用戶內容生成圖形和圖像。 - 根據用戶提供的參數在某些NoSQL數據源上生成查詢,運行查詢並處理結果以有意義的方式顯示。 這些只是樣本。 –

回答

1

這是我迄今發現的。

EJB模塊應該包含大型企業應用程序的業務邏輯核心。另一方面,Web模塊包含了一個完整的Web應用程序,該應用程序應該利用EJB模塊提供的業務引擎。通常,這些模塊分佈在不同的服務器上以用於較大的應用程序,除了需要使用駐留在EJB模塊中的核心業務邏輯提供的服務的Web應用程序之外,還有客戶端應用程序(例如Swing/JFX桌面應用程序)。

換句話說,一會就把業務邏輯獨立的EJB模塊中,如果:

  1. 它的目的是通過多個網絡或桌面應用程序中使用,或
  2. 縮放的考慮,可能會迫使核心業務邏輯要由不同的服務器處理

在其他情況下,可以將他的EJB放入Web模塊中,並將整個事件打包爲WAR文件。

+1

的確,但是認識到將EJB bean從Web模塊中的包移動到他們自己的EJB模塊是微不足道的。因此,您可以從如此簡單的包開始,然後在您的應用程序足夠大或需要單獨部署業務層時移至模塊。 –

+0

您發現的最後一部分,EJB可以放在WAR中,如果EJB模塊存在,那麼它使用EAR進行部署? EAR中的WAR和EJB?問候 – user75ponic

+0

是的。 EAR(企業應用程序)由許多WAR(Web模塊)和一些JAR(ejb模塊)組成。當您的企業應用程序設計爲分佈在多個服務器(多個模塊)中時,這是適當的,但您希望在特定情況下將所有模塊部署在單個服務器上。但是,如果您不想在不同服務器之間分發模塊,則可以將所有EJB放在WAR文件中。 –

1

正如您在上一句中所述,這正是我所建議的:對於JEE6應用程序使用WAR包裝,因爲在大多數情況下您不需要EAR。

如果您需要在多個應用程序之間共享業務邏輯,那麼您可以將其部署爲單獨的模塊。但通常這樣的事情對於擴展的原因並不是必需的,因爲您也可以相應地調整運行WAR的應用程序服務器。