最近在研究OSGI框架,想将服务发布成网路api,目前大概有4中osgi框架,本文用到的是Eclipse自带的equinox。简单实现一个osgi的web,关键参考网上的一路配置下来遇到了不少问题和错误。现在解决了,并且测试成功了,就想说一下,有想学习osgi的同学也能参考参考。
首先我的eclipse版本是4.4.2 LUNA
然后右键new 一个project 选择 Plug-in-project
填写项目名:org.osgi.test ,点击下一步,可以看到一些属性的设置可以为默认的,也可以自定义。本人都是默认的。
一路next下来:
ok,到处项目创建完毕,项目的工程图:
接下来:右键项目run as 选择 run configurations
点击OSGI Framework下的Equniox 如果没有则右键new一个。
选择自己刚刚新建的bundle在下面的Target platfoem勾选 org.eclipse.equinox.console org.apache.felix.gogo.command org.apache.felix.gogo.shell org.apache.felix.gogo.runtime org.eclipse.osgi
然后点击 Run按钮在控制台看到:
则bundle启动成功。
接下来进行web配置。
在src下新建一个folder为webroot(习惯,可以随便设置)在下面新建一个html为test.html
接下来,双击打开MANIFEST.MF文件点击Dependeceis 分别在左右添加bundle和引入包如图所示:
点击 Runtime 添加bin 如图所示:
最后的配置为:
接下来打开自动生成的类修改里面的代码:
接下里再一次打开运行配置:
添加bundle依赖,这一次添加的比较多:
org.eclipse.osgi_3.10.2.v20150203-1939osgi.example.compute_1.0.0.qualifier
如果添加过了就不用再添加了。其实上面的控制态都打印出来。
等等还要配置访问的端口,
ok,现在可以运行了,点击run按钮,然后在浏览器中访问吧:
如果你在代码中写的文件地址是webroot那么访问地址就为:/demo/test.html
总结:遇到错误看错误代码,他会报什么依赖的bundle错误,那我们家把什么bundle加进来。
参考了别人的文档,菜鸟一个。osgi的用途应该在发布服务面向接口的开发,阿里支付宝的sofamvc用的就是OSGI的原理发布服务。sofamvc3之前的都是bundle依赖
sofamvc4以后改成了module.并加入了注解实现发布。结合CE容器开发web系统。