读书人

OSGI应用有关问题请问

发布时间: 2012-03-13 11:21:10 作者: rapoo

OSGI应用问题请教
说实际例子吧。

现在有一个框架Bundle A,一个业务的 Bundel B。

Bundle A中使用了一个第三发组件,我们假设有一个类为Manager。

Manager有一个接口注册函数。

Manager.registerFunction (String alias, String functionName); // functionName包含函数的完整路径 package.class.function

这个第三方组件自然是被Bundle A的class loader加载了。

现在Bundle B 有一个方法要注册。假设为

class Demo
{
public static function ();
}

此时Bundle B初始化时使用

Manager.instance.registerFunction ( "function ", "packageB.Demo.function ");注册函数。

但是由于Demo类是Bundle B 的class loader加载的。所以注册后在第三方软件使用倒function时去反射,就是找不到Demo这个类。

同时又不可能在框架的MAINFEST.MF文件中增加import 业务的Bundle。

[解决办法]

第三方组件是否是bundle的形式,如果是bundle,就不是由Bundle A的class loader加载的。
如果是一个inside的jar,必须export才能被Bundle A之外的bundle使用。

可以将Manager发布为一个service,可以在Bundle B的上下文context中获得Manager,然后将业务类注入。

读书人网 >Eclipse开发

热点推荐