1.初識osgi
osgi的特點:熱插拔,模組化編程。看似真的很誘人,但是如果你是一位初學者,我想一開始你一定會很受折磨,很多概念要理解,很多莫明的錯誤,就單單一個ClassNoFinded,可能就能把你煩吐。還有構架一個osgi項目時那麼多煩人的揪心的配置(具體如何構建一個基於eclipse的osgi應用可以參考林昊的open doc,當然你也可以買他寫的那本 OSGi原理與最佳實務,我個人感覺有點老了,但是做做為初學者,在沒有其它更好的中文資料的情況下,還是值得一讀的)
2.osgi應用的調試與發布
經過一段時間對OSGi的瞭解,基本可以很方便的構建,調試,發布OSGi的應用了。構建可以使用maven-bundle-plugin,這個maven外掛程式;調試可以使用maven-pax-plugin。
具體可參考下邊這個樣本:
http://www.ops4j.org/projects/pax/construct/
發布,我這裡使用glassfish3,glassfish本身就是一個基本OSGi的web應用伺服器,並提供了對Web Application Bundle(WAB)的支援,這是OSGi規範4.2中的一部分。可以很方便的發布web應用。
glassfish3 下載後,使用bin/asadmin.bat啟動,然後輸入start-domain就可以了。
開啟http://127.0.0.1:8080 可以看到glassfish的文檔頁。
http://127.0.0.1:4848 為管理頁
如果一切順利,你可以把你製作的bundle,複製到domains/domain1/autodeploy/bundles就是發布你的bundle了,如果還是不行的,
你還要做如下操作(對於最新版本不存在該問題):
asadmin delete-jvm-options --target server-config -Dorg.glassfish.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command
asadmin create-jvm-options --target server-config -Dorg.glassfish.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command,org.apache.felix.shell.remote,org.apache.felix.fileinstall
這樣直接複製你的bundle到 domains/domain1/autodeploy/bundles就可以了,
如何查看你發布bundle的狀態呢,可以這樣做
cmd
telnet localhost 6666
就相當於開啟了felix的控制台(glassfish預設是基於felix的)
這個時候你可以輸入help查看可以使用的命令,
常用的命令有
ps 顯示bundle列表可以加 -l顯示bundle的位置
start n 啟動一個bundle n為bundle的id。。ps命令中可以看到這個號
stop n停止一個bundle
install url安裝一個bundle
update n 更新一個bundle
對於單個命令的協助可以使用help ps
更多值得你參考的文章有:
http://blogs.oracle.com/arungupta/entry/osgi_application_development_using_glassfish
http://netbeans.org/kb/docs/javaee/maven-osgiservice-cdi.html?intcmp=925655
本文不作者原創,轉載請註明出處,與你分享我的快樂
http://www.cnblogs.com/weirhp