一、什麼是OSGI
OSGi(Open Service Gateway Initiative)技術是Java動態化模塊化系統的一系列規範。OSGi一方面指維護OSGi規範的OSGI官方聯盟,另一方面指的是該組織維護的基於Java語言的服務(業務)規範。簡單來說,OSGi可以認爲是Java平臺的模塊層。
OSGi服務平臺向Java提供服務,這些服務使Java成爲軟件集成和軟件開發的首選環境。Java提供在多個平臺支持產品的可移植性。OSGi技術提供允許應用程序使用精煉、可重用和可協作的組件構建的標準化原語,這些組件能夠組裝進一個應用和部署中。
上面只是簡單的從百度C了一些介紹,只需要知道是一個新的框架就可以了,比以往用的框架都好用(個人覺得)。而且目前很多大公司都在用,小型的用的少,畢竟這個的成本高,入門門檻有點那啥,第一次有點懵逼。
二、開發前準備
開發工具:Eclipse + 開發環境(搞開發的就不用說了吧) + felix(我用的是5.4.0)
開發思維:OSGI是將傳統的各個模塊進行了更細緻化的分離
felix:運行OSGI項目目前所用的容器(支持熱插拔,好爽~~~)
Maven項目:使用過Maven項目吧,知道咋回事就行
三、構架一個OSGI框架的項目
3.1 先啓動felix
cmd >>進入felix所在文件 >>java -jar bin/felix.jar 好啦,目前已成功啓動felix,第一步搞定。
3.2 新建項目
新建一個Maven Project >> 選擇QuickStart的方式就可以了,起名爲:email-parnent
點擊剛纔新建的Maven項目,新建4個Maven Module(一個一個建),名字分別爲:email-api、email-client、email139、email163
到這裏,已經建好了1個Maven項目,4ge Module,這4個Module是email-parnent的子項目。
繼續走吧,如果上面已經搞定了。
配置email-parnent項目的pom文件
a、在<Properties>標籤中加入下面配置(執行我們的jdk版本)
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
b、加入一個依賴
<dependency><groupId>org.osgi</groupId><artifactId>org.osgi.core</artifactId>
<version>6.0.0</version></dependency>
c、繼續配置
3.3 email-api(放接口的)
建了一個包路徑:org.email.api
建一個接口:IEmailService
public void sendEmail(String dest,String title,String content);
下面,繼續配置這個項目:
注意,下面這段文字 在所有的實現項目、client中都要用到;
<groupId>FirstOsgi</groupId>
<artifactId>email-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
好啦,我們的api搞定啦
3.4 email-139(email163同理、email-client配置、編碼原理一樣)
下面就直接貼圖了
四、打包運行吧
直接編譯父項目,email-parnent,生成了4個jar包,將這4個jar包 拷貝到 felix目錄/bundle下,好啦,編碼、包都已準備完成,下面直接用命令行部署吧。
輸入 lb :查看當前運行的包及id
stop 0 :停止根目錄,(felix容器停止了)
重新啓動即可:java -jar bin/felix.jar,會自動將bundle目錄下的jar包進行編譯,至此,我們的OSGI項目就OK啦。
小結:第一次寫博客,寫的不是很詳細,會越來越好的。