编码这么多年了,总得找个自己喜欢的又上点档次的应用搞搞,一直想写个应用但一直没有时间,一直想整合个框架一直没找到合适的,可能是我要求太高了,现在想以敏捷开发为指导开发一套自己的框架,就选择了osgi,osgi最早是在一次笔试中作为最后一大题遇见的,回来后查询了一下觉得这个不错,理念很新颖,也很适合哪种一上线就不能停服务的应用,言规正转,在网上搜了下,最后选择了eclipse基金支持的equinox框架,天天用eclipse想毕也不会很早灭亡,首先去下了sdk,下载地址如下:osgi,http://www.eclipse.org/downloads/download.php?file=/equinox/drops/R-3.6-201006080911/equinox-SDK-3.6.zip
下好后,解压复杂到eclipse目录下。
重启eclipse
接下来查看是否安装成功,可能与eclipse的版本有关系我用的是eclipse3.4,点击run菜单,在弹出的面板上点击run configuration
在弹出的面板里是否看到了osgi framework,假如你看到了就恭喜了,第一步顺利完成。
启动你的Eclipse,新建一个名为SayHello 的plug-in project,在Target Platform 选项中,选择an OSGi Framework:Equinox。笔者自己设置了Activator 路径为org.osgi.demo.sayHello.Activator,每个Activator 都具有两个方法,start() 和 stop(),这两个方法是该bundle 启动、停止的时候,调用的方法,通常在这里注册、初始化或注销该Bundle 服务的过程,这里不需要更改任何Activator 中的内容,用系统自动生成的就可以了。在建立好项目后,会出现对SayHello 项目的配置,这里可以通过dependencies 选项卡,设置需要的plug-in 和引入的package;可以通过runtime 选项卡的设置,确定暴露哪些包。我们新建一个org.osgi.demo.say 包,并建立SayHello 接口,只有一个返回void的方法sayHello() ,并将此包设为暴露的。这些设置都保存在项目的META-INF目录下的MANIFEST.MF文件中,以后要更改的话,只需打开该文件即可。 SayHello 接口的代码如下:
public interface SayHello { public void sayHello(); } |
同样类似的新建一个名为BobSays 的plug-in project。笔者设置的包为org.osgi.demo.bob,这里需要在配置dependencies 的时候,将包org.osgi.demo.say 引入。创建新的类BobSays,代码如下:
public class BobSays implements SayHello { public void sayHello() { System.out.println("Bob says /"Hello OSGi world/""); } } |
这里需要覆写在BobSays Bundle 中的Activator 的两个方法,具体代码如下: