`
salever
  • 浏览: 250154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅析OSGI的bundle依赖

    博客分类:
  • OSGI
阅读更多

 

Bundle是OSGI中的基础元件,不同的bundle之间可以相互依赖、引用,这样许多bundle才会共同协作,实现一些比较复杂的功能。Bundle的依赖一直是一个比较棘手的问题,包括Lazy start等,下面我们具体Bundle依赖到底是怎么一回事。

测试场景:Eclipse 3.6, Equinox 

先看看基础的依赖问题

 

具体见 http://www.salever.cn/?p=1165

 

 

分享到:
评论
9 楼 salever 2016-07-01  
mwdnjupt 写道
http://www.xeclipse.com/?p=1165 这个链接现在为啥打不开了?



www.xeclipse.com的域名忘了续费了。。。被别人抢了,换了  www.salever.cn了
8 楼 mwdnjupt 2016-05-22  
http://www.xeclipse.com/?p=1165 这个链接现在为啥打不开了?
7 楼 Tom.X 2016-03-21  
插件化、模块化应遵循高内聚、低耦合的原则,尽量不要在各bundle之间进行依赖,应该从架构中避免这个原则,开源OSGi开发平台JXADF,在这方面就做得相当优秀,可以参考:http://osgia.com
6 楼 winse 2012-04-07  
5 楼 salever 2012-04-07  
winse 写道
salever 写道
winse 写道

当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?

测试通过,我的判断正确,按照
Require-Bundle: org.salever.osgi.depends.sdk2;bundle-version="1.0.0",
org.salever.osgi.depends.sdk1;bundle-version="1.0.0"
的顺序来决定用哪一个哦 这样其实很容易出现运行时的错误哦


应该是加载的顺序吧?至于你在eclipse依赖里面的顺序只是一个参考?


好像就是依赖的顺序
4 楼 winse 2012-04-06  
salever 写道
winse 写道

当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?

测试通过,我的判断正确,按照
Require-Bundle: org.salever.osgi.depends.sdk2;bundle-version="1.0.0",
org.salever.osgi.depends.sdk1;bundle-version="1.0.0"
的顺序来决定用哪一个哦 这样其实很容易出现运行时的错误哦


应该是加载的顺序吧?至于你在eclipse依赖里面的顺序只是一个参考?
3 楼 salever 2012-04-06  
winse 写道

当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?

测试通过,我的判断正确,按照
Require-Bundle: org.salever.osgi.depends.sdk2;bundle-version="1.0.0",
org.salever.osgi.depends.sdk1;bundle-version="1.0.0"
的顺序来决定用哪一个哦 这样其实很容易出现运行时的错误哦
2 楼 salever 2012-04-06  
winse 写道

当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?

这个嘛 很容易测试的,先预测一下是根据依赖中的顺序来的。因为这个一般是class loader的顺序吧?
1 楼 winse 2012-04-05  

当A,B插件都存在a.b.DemoTest的类,都导出了a.b包,在C插件中引入A,B插件,到底是用那个插件的a.b.DemoTest呢?

相关推荐

Global site tag (gtag.js) - Google Analytics