我們必須開發和維護許多不同大小,範圍和壽命的基於Java Web應用程序(對於同一家公司)。其中一些是巨大的,而其他的只是簡單的頁面,可能只存活幾個月(或幾天),一些已經實現並需要重構。如何在多個應用程序之間共享業務邏輯
雖然有一個共同點,但它們需要訪問(幾乎)相同的信息。
問題
由於公司處理數據的複雜性,我們必須處理許多不同的來源,有些是從古代繼承。我們的域對象可以映射到這些源中的很多。例如,合同域對象映射到我們的主數據庫,但其相關的(物理)文件存儲在文檔服務器中,並且與其相關的活動存儲在NoSQL數據庫中。因此,添加,刪除,搜索這些對象都涉及許多內部操作。
我們的數據來源是(儘管它可以是任何):
- AS400(使用DB2數據庫)
- Documentum的文檔管理器
- 蒙戈DB
- 外部Web服務
- 其他傳統來源
我們通常使用格拉斯sfish作爲應用程序服務器,maven作爲我們的構建工具。
目標
我們的目標是創建一個業務層或庫,我們所有的應用程序都可以訪問,它是:
- 緊湊
- 洽
- 使用方便
- 易於維護
- 無障礙從人Ÿ不同客戶
我們迄今
發現我們一直在掙扎周,我們仍然找不到任何完全令人滿意。一些解決方案:
包在一個或多個罐子所有的業務邏輯:很容易共享,但所有的應用程序必須包含所有依賴的JAR文件和配置文件和照顧的安全性,緩存和其他的東東。難以維護(當有變化時,我們必須更新每個項目的罐子)。
創建一個包含所有邏輯的EJB項目和遠程訪問:易於維護,安全性,緩存和配置只實施一次。我們害怕遠程通話的處罰。正如我們在研究中注意到的那樣,這似乎是一種不好的做法(我們對ejbs沒有多少經驗)。
創建一個耳內項目,並使用本地訪問:嗯,這比遠程版本更快,但它是一個地獄來維護。
去OSGI:我們有點害怕這個,因爲它不像Ejb那麼受歡迎,我們從來沒有認真對待它。
這種問題有沒有常見的做法?
非常感謝!
這樣的工具,因爲我做了一些EJB。你能解釋爲什麼你需要單獨的BL。對於數據方面,你使用的是DAO模式?是否有可能通過這些映射到多個來源?應該可以管理多個數據源。 – 2013-03-28 09:50:22
感謝您的超快速答案!這實際上是主要想法。我們想使用DAO來封裝所有的髒東西。問題是如何從'客戶'應用程序訪問這些DAO。 – danielsan 2013-03-28 09:55:53
如果您正在構建一個全新的應用程序,我會推薦一種osgi方法。但是我不會推薦它,如果你打算移植很多東西,並且如果這個團隊是osgi的新手。 – techuser 2013-03-29 04:43:58