2011-03-05 45 views
1

我想開發的Java /春/休眠作爲一個商業平臺,我可以插件連接(即CRM插件,插件潔具,銷售插件)的Web應用程序。這些插件可能以樹狀方式依賴於其他插件。父項目將被打包成具有所有的基本配置和外觀(春季CONFIGS,CSS,腳本),隨時可以去用戶和組管理,安全設置等業務web應用平臺結構

總之,我想戰爭它的行爲和看起來有點像Joomla,但使用不同的工具來建立不同的目的。我有幾個有關該項目的問題:

  1. 你知道任何提供這樣的平臺準備好的開源項目嗎?
  2. 如果沒有,是Maven的應用,用於管理這些插件?
  3. 打包和部署這些插件的最佳方式是什麼?

最後但並非最不重要的是,這是正確的路要走,還是死路一條?爲這些業務需求創建單獨的Web應用程序會更好嗎?

回答

1

有很多的方法來建立插件模塊。 一些想法:

你可以將每個插件模塊打包成一個jar文件,並將其放在這個jar的類路徑根目錄中,並將一個spring配置文件與beans配置文件放在一起,所以如果你使用的是特定的插件。通過簡單地在web.xml中添加此文件contextConfigLocation的參數可以「打開」這個包在Web應用程序的豆類:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     classpath:module1.xml 
     classpath:module2.xml 
     classpath:module3.xml 
     classpath:module4.xml 
    </param-value> 
</context-param> 

所以,你可以在你的Web應用程序使用這些bean。這樣做的另一種方法是使用更多註釋驅動的方法。或者你可以混合使用這些方法。

前段時間,我構建了一種方法,通過檢測類路徑中特定抽象類(合同)的所有實現,自動熱檢測(在執行時,無需重新啓動應用程序)桌面應用程序中的插件。所以,我所需要做的就是構建一個新的插件,即實現這個「合同」。我已經使用了一些「classloader」好東西來做到這一點。

在談到「模塊」,也許你會看到一些關於OSGi

嗯...這些都是一些想法。我希望它以任何方式幫助。 ;-)

+0

是的,我想,我會用這種方法去。感謝所有的答案 – 2011-03-07 19:55:51

0

我認爲這是設計一個Web應用程序,這取決於需求的好方法。我使用插件,因爲我有幾個客戶端使用具有不同需求的相同代碼庫。如果你正在開發一個安裝,我會說不要浪費你的時間。

現在對於如何做。 「插件」是一個非常模糊的概念。我使用的插件

  • 攔截方法調用
  • 運行後臺進程
  • 在我的web應用程序

現在的問題是,如何做這項工作增加額外的意見。方法攔截器使用org.aopalliance.intercept.MethodInterceptor工作。後臺處理器使用TimerTask。 Web應用程序中的其他視圖使用Spring MVC路由。

我的插件被打包成JAR和在應用程序啓動時間爲Spring應用程序上下文發現的。

這一切都很一般,但可能會給你一些想法。

0

你知道任何開源的 項目提供這樣一個平臺 準備好去嗎?

看一看Spring Roo

如果不是行家是適用於 管理這些插件?

是的。看看AppFuse如何使用它。

什麼是封裝的最佳方式和 部署這些插件? 再次檢查Spring ROO或AppFuse如何執行此操作。

希望有所幫助。

0

*

最後但並非最不重要的,這是正確的道路要走,或者是一個死 結束了嗎?爲那些 業務需求創建單獨的Web應用程序會更好嗎?

*

我在區模塊化與JPA的負面經驗。例如@Entity客戶包含在CRM模塊中,但是被其他客戶廣泛使用。第一天然想法一個模塊=自己的持久性單元很難實現,JPA應該跨越模塊,模塊化思想走到死衚衕,模塊不分離。

我用一種模塊化的「在JAR過程&」,那種結構的構建,一些菜單/實體等屬於「模塊」在輕感