0
在問我的問題之前,我必須描述我們的應用程序是如何構建的。門面/服務架構
我們運行了幾個在服務層使用ejb的web應用程序。我試圖描述一個簡單的例子通信:
- 一個JSF豆(PersonHandler)調用一個門面刪除「人」對象
- 一個門面可以用許多不同的服務,但不能使用其他的門面。在這種情況下,PersonFacade使用PersonService(刪除該人員)和NotificationService(發送電子郵件)。交易也由門面邏輯控制。如果交易成功提交,則只能發送電子郵件。
- 服務無法引用其他服務或外觀。而不是這個PersonService只有一個對PersonDao的引用(堅持邏輯)。
我覺得這個架構很常見。這是我的問題。
在PersonFacade的刪除方法中,我們有非常重要的代碼,我們不會重複。每次應該刪除一個人這段代碼應該運行。在另一個外觀邏輯中,我們需要完全相同的代碼,但外觀< - >不允許外觀通信。
這個問題的最佳解決方案是什麼?
繼承人我當前的解決方案,但我不滿意它。我創建了一個新的ejb模塊,其中包含一個處理刪除邏輯的ejb。兩個外觀模塊都依賴於新模塊,所以一切都可以找到,我不會打破「外牆從不使用其他外牆」合同。如果我們每次使用這個,我們需要在不同的地方使用相同的代碼,我們的模塊將會爆炸,模塊會變得混亂。目前我們有超過250個ejb/jar模塊。