OSGi熱部署容器:Karaf的特性和使用配置

Apache Karaf是一個強大的OSGi容器。它爲發佈OSGi應用程序提供了支持。java

一個OSGi程序是由一系列OSGi bundles組成的。OSGi bundle 是一個在MANIFEST中帶有附加元數據的jar文件。apache

在OSGi中,一個bundle能夠依賴於其它的bundles。所以,大部分狀況下,在部署一個OSGi應用程序以前,你須要先把這個應用程序須要的其它bundles部署上。緩存

Apache Karaf爲咱們提供了一種簡單、靈活的方式來配置和發佈OSGi應用程序。在Karaf中,使用Apache Karaf feature來實現這種配置。ide

Feature的定義:模塊化

a namea versiona optional description (eventually with a long description)a set of bundlesoptionally a set configurations or configuration filesoptionally a set of dependency featuresspa

當你install一個feature的時候,karaf 會install feature中所定義的所有的資源。它會自動地解析和install全部定義的bundles、配置文件以及它所依賴的其它的features(feature中還能夠定義features)。設計

Features經過它自定義的XML標籤來描述ip

安裝好的features會保存在karaf的緩存(cache:在data目錄下)中,這樣你以前安的features資源在你重啓karaf以後仍然會保留。若是你執行了clean並重啓karaf或者刪除了karaf cache,全部以前安的features資源就會丟失,你就須要再手動安裝一遍。爲了防止出現這種狀況,你能夠制定features爲boot類型的。ssl

什麼是boot features?一個boot feature會被karaf自動安裝,即便它沒有提早使用feature:install安裝。這個配置在etc/org.apache.karaf.features.cfg文件中,文件中有兩個屬性被用來定義boot features。資源

http://baijiahao.baidu.com/s?id=1600246970563166864&wfr=spider&for=pc

 

Java模塊化系統OSGi

https://www.tianmaying.com/tutorial/osgi-kickstart

OSGi中Bundle間的耦合:Export/Import Package與服務

OSGI經過不一樣的classloader來加載不一樣的bundle,達到隔離bundle的目的,咱們也提到經過Import/Export Package的方式來控制bundle之間「有限地」訪問對方的類。

在OSGI裏,bundle暴露本身的類(Export)或引用其餘bundle的類(Import)的單位是package(就是每一個java代碼文件最上頭定義的Package),也就是對於bundle來講,只能將整個package裏的類暴露或引用進來,而不是對單個類做暴露或引用,因此,咱們在設計時,應考慮將需暴露出去的類放在一個或幾個package裏,而將需隱藏起來的類放在其餘的package裏。

相關文章
相關標籤/搜索