快速业务通道

初探Java企业级开源框架OSGi - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
d() {      for (int i = 0; i < 10; i++) {        try {          Thread.sleep(1000);        } catch (InterruptedException e) {          e.printStackTrace();          System.err.println("Thread can''t sleep");        }        say.sayHello();      }    }    public void setSay(SayHello say) {      this.say = say;    } }

初探Java企业级开源框架OSGi(6)

时间:2011-06-25 51cto

这里采用依赖注入的方式,所以有一个setSay() 方法,来设置一个具体的SayHello。helloWorld() 方法就是调用特定的SayHello.sayHello() 来完成的,用10秒钟的时间打印十次sayHello() 的具体内容。该Bundle 的Activator 代码如下:

public class Activator implements BundleActivator {    private ServiceRegistration serviceReg = null;    public void start(BundleContext context) throws Exception {      SayHelloService sayService = new SayHelloService();      serviceReg = context.registerService(SayHelloService.class.getName(),          sayService, null);// 1      ServiceReference serviceRef = context          .getServiceReference(SayHello.class.getName());// 2      sayService.setSay((SayHello) context.getService(serviceRef));// 2      sayService.helloWorld();// 3    }    public void stop(BundleContext context) throws Exception {      if (serviceReg != null)        serviceReg.unregister();    } }

完成的主要功能是:1、注册SayHelloService 服务;2、获取一个的SayHello 服务;3、并注入到SayHelloService 服务中,现在注入的服务是从服务上下文中具体获取的,而到底是哪个,只有在运行时状态才能决定。

至此,所有的Bundles 我们都已经完成了,选择Open Run Dialog...,并选中上述五个Bundles 和OSGi 核心Bundle,点击Run 按钮。输入“ss”,列出了6个Bundles 的状态,此时,如果你的SayHelloService Bundle 状态是Resolved,那么你可以通过命令“start ‘SayHelloService Bundle 状态的id’”,启动SayHelloService,此时你会看到打印出的10条hello world信息。读者可以手动利用用命令“start” 和“stop” 改变sayHello 的具体执行者,动态的更换实际sayHello 的执行者。这个简单的HelloWorld 应用,可以说明SayHelloService 在具体执行的过程中行为是可动态改变的,并且改变只是局部的。

小结

读完本文,实际动手做过HelloWorld,想必读者对OSGi 框架也应该有所了解了,OSGi 框架在国外关注率是挺高的,但是在国内的推广和使用却不够广泛,可能是因为OSGi 字面上的意思太过于抽象,因此笔者在这里将这个优秀的框架介绍给大家,本片只是一个简单的介绍,并不涉及OSGi 框架深入的知识。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号