[英]Best Practice For Referencing an External Module In a Java Project
我有一個Java項目,期望外部模塊注冊它。 這些模塊:
我的主項目需要能夠在運行時加載(例如使用自己的類加載器)任何這些外部模塊。 我的問題是:在主項目中注冊這些模塊的最佳方法是什么(我更喜歡保留這個vanilla Java,而不是使用任何第三方框架/庫來解決這個孤立的問題)?
我目前的解決方案是使用key = name,value = class | delimiter |在主項目中保留單個.properties文件。 人類可讀的名稱(或協調兩個.properties文件,以避免分隔符解析)。 在運行時,主項目加載到.properties文件中,並使用它找到的任何條目來驅動類加載器。
這對我來說很難過。 有更好的方法嗎?
Java中的標准方法是定義服務提供者。 看到,
http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service%20Provider
讓所有模塊通過標准xml文件表達其元數據。 稱之為“my-module-data.xml”。
在主容器啟動時,它會查找類路徑*:my-module-data.xml“(可以有一個FrontController類)並委托各個模塊的FrontController類來做任何想做的事:)
另外google for Spring-OSGI和他們的doco在這里也很有幫助。
擴展@ZZ Coder ......
所提到的服務提供者模式,在JDK內部使用,現在在帶有ServiceLoader的 JDK 6中更加正式化。 Netbeans Lookup API進一步擴展了這一概念。
底層基礎設施完全相同。 也就是說,兩個API都以相同的方式使用相同的工件。 NetBeans版本只是一個更靈活,更健壯的API(例如,允許其他查找服務,以及默認查找服務)。
當然,如果不提及EJB,Spring和OSGi的主導,更“重量級”標准,那將是一種疏忽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.