使用glassfish3发布osgi应用

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

 

 

posted @ 2011-12-07 22:59  与您分享我的快乐 ---笨笨  阅读(494)  评论(0编辑  收藏  举报