2011-09-06 54 views
0

我一直在想Java EE應用程序之間的分離......Java EE應用程序應如何分離?

我可以看到爲什麼應用程序之間的分離可能很好。對於常規的java項目來說,情況非常相似 - 代碼分離導致更好的設計和代碼重用。但我想知道是否還有更多。

我還可以看到一些缺點,例如需要在不同應用程序中的bean之間使用遠程引用,而不管它們是否在同一個JVM上運行。

更具體地說,在我開發的系統中有大約10個應用程序。
所有這些應用程序都在單個JVM中的服務器上運行。有些是系統不能沒有的核心應用程序,有些是附加程序。 其中一些應用程序大多是孤立的,但其中一些正在被所有其他應用程序使用(例如,我有一個應用程序負責所有其他應用程序使用的持久性)。

  • 什麼時候應該將我的Java EE應用程序劃分爲多個應用程序?
  • Java EE應用程序之間應該分離的原因是什麼?
  • 何時應該避免?
+0

您的應用程序如何與對方進行交互?例如。 Web服務,RMI/IIOP,數據庫等? – home

+0

我只有兩個Web服務和一個servlet,而這些只是簡單地向隊列發送消息,隊列正在被我的一個應用程序監聽,該應用程序調用其他應用程序(是的,使用RMI)。所有的應用程序還調用一個負責持久性(數據庫)的特定應用程序。 – wafwaf

回答

0

首先,將常見的文件(bean,utils,常量...等)打包到一個Jar文件中。

其次,根據其功能分開應用程序。

三,把CommonFiles.jar放在你分離項目的所有EAR可以到達的地方。如果您有多臺物理服務器,請將其複製到每臺物理服務器上。

+0

「根據其功能分開應用程序」可以用多種方式解釋。我需要更具體的方法來確定應用程序劃分的情況。對於這種情況,我需要強有力且獨特的經驗法則。 – wafwaf

1

嗯,一個最終的答案似乎並不可能 - 我的想法:


我什麼時候要分我的Java EE應用到多個應用程序?

我想不出一般一般規則,看看是否分離:

  • 的應用程序不會在過程中,數據的人(用戶)而言分享功能方面。只共享一組代碼並不是將應用程序合併到一個EAR中的指標,而應該在構建和部署期間處理(例如實用程序類)。
  • 這些應用程序屬於不同的部門(業務單位),可能有不同的策略
  • 不同的非功能性需求。例如。您可以預見需要向外擴展,app1需要4 x 4096mb內存,app2需要1 x 256mb內存(對於用戶數量,存儲空間和可用性等)。
  • 矛盾的功能方面。假設你有一個沉重的批處理和一個web應用程序,分開這些子系統可能是有意義的 - 再次用於向外擴展。

應該是什麼Java EE應用程序之間的分離的原因是什麼?

見上。


什麼時候應該避免?

同樣,只有一些跡象表明:

  • 如果同一個團隊工作的所有應用程序(開發業務)
  • 的應用程序是一個「一定規模」以下 - 我知道這是很模糊假設你有5個應用程序,每個應用程序由10個用戶使用。
  • 應用程序永遠不會分裂,它們只是屬於一個整體,它們的要求沒有區別。