有网友问我有没有osgi的demo,于是将前段时间给朋友的一个例子拿来整理了一下。
首先,这个demo是在karaf下运行的,项目由三个bundle组成,会涉及自定义的console命令,服务的发布和引用。
项目为maven项目,为方便构建,将三个bundle项目作为一个父项目下的三个子项目。项目经mvn package构建后,在三个子项目的target文件夹下分别生成了Calculator-1.0.jar、AddModule-1.0.jar、SubModule-1.0.jar三个bundle,这三个bundle分别为:
1、Calculator bundle,负责处理console输入的命令;
2、AddModule bundle,负责提供计算加法的服务;
3、SubModule bundle,负责提供计算减法的服务;
到http://karaf.apache.org下载karaf后,解压,将三个bundle复制到在<karaf-root>/deploy下,运行<karaf-root>/bin/karaf.bat(或karaf.sh)启动karaf,输入list,可以看到三个bundle状态均为ACTIVE,而且blueprint也是CREATE的状态。
这时就可以输入
karaf> calc:add 1 2
1 + 2 = 3
karaf> calc:sub 10 3
10 - 3 = 7
可尝试停了AddModule或SubModule后,输入以上命令,看结果如何。