摘要: 擴展(Extension)是很多可擴展項目中一個關鍵的機制,可以利用擴展向平臺添加新功能。但是擴展不能隨意地創建,必須按照擴展點(Extension Point)定義的規范進行明確的聲明,平臺才能識別出這些擴展。所謂擴展點,就是系統定義出來可以讓你擴展的地方,可以認為是一些擴展的契約,而擴展,這是你對這些擴展點的實現,當然你自己的插件也可以定義擴展點供別的開發人員擴展。
閱讀全文
摘要: OSGI概念中主要分為了Bundle和Service,可以認為Bundle是一個模塊的管理器,主要是通過BundleActivator管理模塊的生命周期,而Service則是這個模塊可暴露對外的服務對象,這里體現了OSGI和傳統的Plugin Framework不同的一個地方,管理和靜態結構分開,在OSGI中通過在manifest.mf文件中增加一些內容來發布Bundle,在其中描述了Bundle的提供商、版本、唯一ID、classpath、暴露對外的包、所依賴的包;每個Bundle擁有自己的ClassLoader以及context,通過context可進行服務的注冊、卸載等,這些操作都會通過事件機制廣播給相應的其他的Bundle;一般來說都為通過在Bundle中編寫初始需要注冊的服務的方法來完成Bundle可供外部使用的服務的暴露功能;如需要調用其他Plugin提供的服務可通過context的getServiceReference先獲取Service的句柄,再通過context.getService(ServiceReference)的方法獲取Service的實體。
閱讀全文