读书人

bundle通讯-类访问

发布时间: 2012-09-10 22:20:12 作者: rapoo

bundle通信----类访问

上篇中我们演示了如何通过Event方式来实现Bundle间的通信。Bundle中类的缺省访问范围只对本Bundle内部可见,但对其它任何Bundle都是不可见的;在Bundle内部,类的可访问性遵循Java语言的一般规范。那么,如果想要从一个Bundle中访问另一个Bundle中的类,该怎么办呢?解决方法是将源Bundle中的包导出来,然后把它们导入到目标Bundle中,就能实现Bundle之间类的访问了。下面以一个实际例子来说明:


1:首先我们建立一个bundle A 工程(工程名为my.osgi.bundle.access.a),然后工程中进行如下操作 A:新建一个ClassAccess类,代码如下:




3:编译工程,分别会生成my.osgi.bundle.access.a-1.0.0.jar和 my.osgi.bundle.access.b-1.0.0.jar两个Bundle。4: knopflerfish运行,加入以上两个Bundle, 先运行my.osgi.bundle.access.a-1.0.0.jar,然后运行my.osgi.bundle.access.b-1.0.0.jar


输出结果如下:

[stdout] Waiting the calling from bundle B[stdout] Inside ClassAccess.saySomething() of bundle A

由此可见,通过导入导出Package 的方式,Bundle A 已经能访问Bundle B 中的类 。




读书人网 >其他相关

热点推荐