在我當前的應用程序中,我想通過用戶界面在運行時創建和配置osgi服務。我研究過OSGi Metatype規範,但它只支持簡單的類型屬性。動態創建和配置具有依賴關係的OSGi服務
所以我的問題是:是否有一個很好的理由有屬性類型不支持,如其他OSGi服務,沒有人知道一個已經存在的項目,做這樣的事情?
UPDATE
爲了進一步澄清我的問題:
什麼我想要做的是創造,並根據需要通過軟件的用戶配置新的服務。如果將新的服務接口添加到系統中,這應該甚至可以工作。
讓我們假設我有一個服務接口,用於發送通知
public interface NotificationService {
void notify(Notification n);
}
和用於發送通知到例如一個實現推特。通過Metatype規範,我可以編碼Twitter服務需要用戶名和密碼的信息。這使我可以在運行時動態創建一個用於創建新的twitter通知服務的UI。
這適用於簡單的數據類型,但元類型規範不處理依賴於其他服務。例如。可以說Notification
具有文件附件,因此Twitter服務需要FileUpload服務來存儲文件。
我試圖通過一個例子來闡明我的問題。我希望這有助於理解我想要做什麼。 – crazymaik 2010-07-22 13:57:03
舉個例子。 Metatype服務不能幫助您,我認爲這與您設想的用例不太匹配。你可以做的是擁有一個簡單的字符串值屬性,並提供特定文件上傳服務的可用選項(當然,這些服務之間的硬編碼依賴關係 - 如果您使用新的文件上傳服務添加捆綁軟件,會發生什麼情況?)然後使用ServiceTracker獲取具有自定義屬性過濾器的服務。 我認爲使用自己的元數據描述系統(使用註釋!)會更好地爲你工作。甚至是Eclipse註冊表。 – 2010-07-22 15:17:27
只是想知道這是否回答了crazymaik的原始問題。 – 2010-08-08 10:10:55