OSGI类加载问题

JRockit 2013-07-23 11:11:20
看《深入理解OSGI》(作者:周志明)书遇到的一个问题,OSGI中Fragement Bundle木有自己的类加载器,它与Host Bundle公用同一个累加器器,但是书中说在OSGI环境下,当收到类加载请求时,OSGI将按照下面的顺序进行类搜索:
1:将以java.*开头的类委派给父类加载器加载;
2:否则,将委派列表名单内的类委派给父类加载器加载;
3:否则,将import列表中的类委派给export这个类的bundle的类加载器加载;
4:否则,查找当前Bundle的classpath,使用自己的类加载器加载;
5:否则,查找类是否在自己的Fragement Bundle中,如果在,则委派给Fragement Bundle的类加载器加载;
6:否则,查找Dynamic Import列表的Bundle,如果在,则委托给Bundle的类加载器加载;
7:否则,类查找失败。

我的疑惑点如下:
既然Fragement Bundle木有自的类加载器,第五条又说委托给Fragement Bundle的类加载器加载,这单是不是有矛盾。
菜鸟一枚,是我自己理解的不到位,还是作者的笔下之误呢?
...全文
183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsjszg 2013-07-24
  • 打赏
  • 举报
回复
看equinox的源码,没有对Fragement Bundle的处理步骤。 1) if startsWith "java." delegate to parent and terminate search 2) if part of the bootdelegation list then delegate to parent and continue of failure 3) search the imported packages 4) search the required bundles 5) search the local bundle 6) attempt to find a dynamic import source; only do this if a required source was not found
小丑哥_V5 2013-07-24
  • 打赏
  • 举报
回复
JRockit 2013-07-24
  • 打赏
  • 举报
回复
2楼咋么没见了,为什么无论在哪个网站都存在一个神奇的2楼

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧