OSGI開發的一點心得


最近用OSGI+嵌入jetty做了一個IDE的后台管理,OSGI真是個好東西,即插即用。

現總結一下初學時候遇到的問題。

1、啟動WEB服務

       需要加載6個插件(org.eclipse.osgi是默認一定要加載的插件,不計入其中):

       javax.servlet

       org.apache.commons.logging

       org.eclipse.equinox.http

       org.eclipse.equinox.http.servlet

       org.eclipse.osgi.services

       org.mortbay.jetty

 

2、導出\配置\啟動OSGI遇到的問題:

如何導出OSGI?

首先是打包,可以自己手動來,找到OSGI需要的全部插件,然后打包,也可以選擇maven2等插件來幫助打包並解決依賴性問題,目前為了保持干凈的工作空間,我沒有安裝任何其他的插件,但又有數百個插件是要打包的,這種情況下,推薦如下方式:

a、新建一個target difinition項目,該項目用來保存各種版本的壓縮文件

b、在該項目下新建一個.target文件,該target使用方式是一目了然的,Eclipse提供了target editor。

 

     在這里選擇引用文件夾,target編輯器將會從這些位置搜索插件,注意,它並不真正的產生效果,僅僅只是為了后面查找插件依賴服務的,相當於添加索引。

      

     在這個位置添加你要啟動的插件,依賴性通過右邊的“Add Required”自動完成。注意:該editor的功能並不完善,它只是原樣的導出你的選擇,所以如果是你自己寫的插件,請之后再手動export,不然只有src沒有bin,當然你可以通過配置build選項,給bin文件夾打鈎來解決(我的下步工作會是寫個新的構建器,使之能給自定義插件打jar包),然后,add required也會導入很多多余的插件,如ui包等。

    然后選擇導出,即可。

     

 

如何配置OSGI?

你需要一個start.bat,內容參考插件configuration的argument

如 

java -jar -Dorg.osgi.service.http.port=10000 equinox.jar -console 10000為指定的端口。 equinox.jar是啟動的jar包,equinox是eclipse基於OSGI框架的產品。該jar包可以在eclipse的plugins目錄找到。復制,放在根目錄下。創建一個configuration文件夾,里面有config.ini配置文件。內容如下: #This configuration file was written by: #org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser 
#Thu Dec 22 15:48:36 CST 2011 
#org.eclipse.update.reconcile=false 
#osgi.instance.area.default=@user.home/workspace 
#osgi.framework=plugins/org.eclipse.osgi_3.7.0.v20110613.jar 
#equinox.use.ds=true 
osgi.noShutdown=true 
eclipse.ignoreApp=true 
#org.osgi.framework.bootdelegation=* 
osgi.bundles=reference\:file\:plugins/javax.servlet_2.5.0.v201103041518.jar@\:start,\ 
reference\:file\:plugins/org.apache.commons.logging_1.0.4.v201101211617.jar@\:start,\ 
reference\:file\:plugins/org.eclipse.equinox.http.jetty_2.0.100.v20110502.jar@\:start,\ 
reference\:file\:plugins/org.eclipse.equinox.http.servlet_1.1.200.v20110502.jar@\:start,\ 
reference\:file\:plugins/org.mortbay.jetty.util_6.1.23.v201012071420.jar@\:start,\ 
reference\:file\:plugins/org.mortbay.jetty.server_6.1.23.v201012071420.jar@\:start,\ 
reference\:file\:plugins/org.eclipse.osgi.services_3.3.0.v20110513.jar@\:start 


osgi.bundles.defaultStartLevel=4嗯,以上屬性……參考字面意思。注意插件的加載級別即可。  如何啟動OSGI?雙擊start.bat…… 

遇到的ClassNotFoundException問題

       有可能是因為config.ini中的org.osgi.framework.bootdelegation沒有配置好

       org.osgi.framework.bootdelegation=* 即可

       當然也可以指定package,用逗號隔開,可以使用通配符


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM