在HTTP容器中內嵌OSGI容器Equinox

2021-09-01 01:33:31 字數 1378 閱讀 4473

這一篇講另半部分:怎麼在http容器(如tomcat)中嵌入equinox。

可以看到這其中已經有乙個eclipse的目錄結構,和平時新增外掛程式一樣,只要把我們新建的bundle放到plugins目錄下,即可。

安裝完這個war後,啟動tomcat,待tomcat啟動後,在console上按幾下回車,就可以得到osgi控制台了,如下:

可以看到,要在http容器裡嵌入equinox非常簡單。

不過有乙個比較重大的問題:外掛程式不會自動更新,例如一旦tomcat啟動後,再有新的外掛程式扔進plugins目錄下,它不會被自動載入和啟動,必須把tomcat重啟,才能生效。

我也不知道怎麼配置就可以自動載入,然後我又想要這個功能,沒辦法就只能自己寫了。

假設在eclipse下定義乙個新的目錄deploy,每隔一段時間就去掃瞄這個deploy目錄,如果有檔案或資料夾,就試圖把它(它們)作為乙個bundle去安裝、啟動,然後它bundle從deploy目錄下移到plugins目錄下。

所以,我們需要有乙個新的外掛程式,用來掃瞄deploy目錄並且安裝和啟動找著的bundle;然後我們把這個外掛程式讓到plugins裡,讓它隨著tomcat啟動而啟動。

剩下的事情就是怎麼實現這個bundle了。

1.定期掃瞄

new thread()  catch (interruptedexception e) 

deployallunder(deployfolder, pluginsfolder);}}

}.start();

2.安裝和啟動

private void deployallunder(file deployfolder, file pluginsfolder)  catch (bundleexception e) 

} }

3.移動和刪除

private boolean moveinstalled2plugins(file f, file pluginsfolder) 

private boolean removeinstalledfile(file f) else if (f.isdirectory())

}return f.delete();

} return true;

}

4.得到deploy和plugins目錄

private file getdeployfolder() 

return deployfolder;

} private file getpluginsfolder()

完了以後,以後每次有新的bundle,只需要放到deploy目錄下即可,過一會就會被掃瞄到並且被自己安裝和啟動。

在VC 2005中內嵌彙編

在vc 2005中內嵌彙編 一na和nb進行數值交換 intna 10 intnb 11 asm 二 加法運算 intassembleradd int na,int nb return nb 三 減法運算 intassemblersub int na,int nb return na 四 採用彙編呼...

在osgi中應用log4j(二)

在單純的osgi環境中,利用log4j自帶的配置檔案讀寫工具,讀寫log4j.xml檔案,載入日誌配置是可以的 domconfigurator.configure log4j.xml 解決這個問題的方法,是讓bundle在自己的classloader體系中,載入所需要的物件,所以,要把讀配置檔案的c...

在gdb中檢視stl容器

在gdb中檢視stl容器 本文主要內容來自於http sourceware.org gdb wiki stlsupport 目前,gdb預設不能print出stl容器的內容,但是網上有好多種方案來做這件事,我試用了一下,比較方便的是以下兩種 pvector,plist,pmap,pset,pdequ...