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的文档页。
如果一切顺利,你可以把你制作的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