OSGI

1、場景:
搭建Spring-DM環境的時候,在導入com.springsource.org.aopalliance、org.srpingframework.aop、org.springframework.beans、org.springframework.context、org.springframework.context.support、org.springframework.core這幾個bundle並且
在run-configurations對話框中選中target platform下org.apache.commons.logging(1.0.4.v201005080501)bundle。

在啓動OSGI Framework完框架後,用ss命令查看bundle運行狀態時,會顯示上一步導入的bundle爲install狀態,而不是active狀態。
使用指令啓動bundle,start <bundleid>(代表bundle的id值),發現報告如下錯誤

Import-Package: org.apache.commons.logging; version="[1.1.1,2.0.0)"

原因:OSGI框架對bundle的version的版本也有過濾約束,[1.1.1,2.0.0)表示logging的版本號要大於等於1.1.1版本並且小於2.0.0版本。而我們上面導入的target platform的版本不在這個範圍之內,所以報錯沒啓動,狀態爲install。

解決:1、可以改每個bundle對於logging的依賴版本。
2、參見http://flym.iteye.com/blog/677873的描述。導入如下bundle即可:com.springsource.slf4j.org.apache.commons.logging-1.5.6.jar
com.springsource.slf4j.api-1.5.6.jar
com.springsource.slf4j.log4j-1.5.6.jar
com.springsource.org.apache.log4j-1.2.15.jar

2、修改Target Platform的內容:
場景:在使用Spring-DM來實現osgi應用的時候,網上很多的做法都是將Spring-DM的lib和dist裏的bundle導入到workspace,這樣exploer內容就很多,找項目很麻煩。如是想找一種方法,把bundle都加入到Target Platform中,這樣,在配置OSGI FRAMEWORK運行的時候,就在Target Framework中選即可。

解決:window -- preferences -- Plug-in Development -- Target Platform , 選中 “Running Platform(Active)”,點擊“Edit...”,在“locations“書籤下,點擊“Add...”,在此加入Spring DM2的dist和lib目錄即可。

3、入門可參考 http://nopainnogain.iteye.com/category/106515
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章