- 0
- 0
- 约8.52千字
- 约 13页
- 2017-08-09 发布于重庆
- 举报
类加载器特技OSGi代码生成.doc
类加载器特技:OSGi代成
把大型系OSGi架构上常常意味着解决AOP包装器,ORM映射器以及服。
我们将按照复杂性增加的顺序考察一些类加载的典型问题,开发一小段代码来解决这些问题中最有趣的一个。即使你不打算马上写一个代码生成框架,这篇文章也会让你对静态定义依赖的模块运行时(如OSGi系
这篇文章还包括一个可以工作的演示项目,该项目不仅包含这里演示的代码,还有两个基于ASM的代
类加载地点转换
把一个框架移植到OSGi系extender模式重构。OSGi框架,与此同bundle的
ClassLoader appLoader = Thread.currentThread().getContextClassLoader();
Class appClass = appLoader.loadClass(com.acme.devices.SinisterEngine);
...
ClassLoader appLoader = ...
Class appClass = appLoader.loadClass(com.acme.devices.SinisterEngine);
替
Bundle appBundle = ...
Class appClass = appBundle.loadClass(com.acme.devices.SinisterEngine);
尽管我OSGi为我们加载应用代码,我OSGi容器安装/卸bundle而增加/bundle,在
由于上下文OSGi没有定OSGi下几乎不使用上下文OSGi容器如何自正在。但在一个官方的bundle。
适配器
有ClassLoader 参数,允OSGi就Bundle对象适配ClassLoader API的
public class BundleClassLoader extends ClassLoader {
private final Bundle delegate;
public BundleClassLoader(Bundle delegate) {
this.delegate = delegate;
}
@Override
public Class? loadClass(String name) throws ClassNotFoundException {
return delegate.loadClass(name);
}
}
现在我们可以把这个适配器传给转换的框架代码。随着新bundle的增减,我bundle跟踪代 —— 例如,我“在外部”把一个Java框架适配到OSGi,避免OSGi类加载的示意性的例子:
...
Bundle app = ...
BundleClassLoader appLoader = new BundleClassLoader(app);
DeviceSimulationFramework simfw = ...
simfw.simulate(com.acme.devices.SinisterEngine, appLoader);
...
桥接类加载器
许多有趣的Java框架的客增enhancement)。通常,增
增 - AOP特征的包装器被作
增byte[],由你喜ASM,BCEL,CGLIB)一个ClassdefineClass()方法。我
类空间完整性 - 首先我“看到”足
可 - ClassLoader.defineClass()是一个受保
类空间一致性 - 增bundle混入OSGi容器来“不可”。作同
类空间完整性
增Java框架来 - 这意味着该框架应该会把该新类加入到其类空间。另一方面,增强类实现的接口或者扩展的类在应用的类空间是可见,这意味着我们应该在这里定义增强类。我们不能同时在两个类空间定义一个类,所以我们有个麻烦。
因bundle之上通
public class BridgeClassLoader extends ClassLoader {
private final ClassLoader secondary;
public BridgeClassLoader(ClassLoader primary, ClassLoader secondary) {
super(primary);
}
@Override
protected Class? findClass(String name) throws ClassNotFoundException {
return secondary.loadClass(name);
}
}
现在我们可以使用前面开发的BundleClassLoader:
/* Application
您可能关注的文档
- 碳钢搅拌桨叶.doc
- 磁力钻,磁座钻,钢板钻,磁铁钻,铁板钻四档调速.ppt
- 磁感应强度上课课件.ppt
- 磁感应强度磁通量练习题.doc
- 磁铁的材质及性能.doc
- 示范大厦申请报告.doc
- 社会主要能源.doc
- 社会公园规则.doc
- 社会四年级上电子备课.doc
- 社会现象类材料作文指导.ppt
- 03-2 2025年度民主生活会征求意见座谈会主持词.docx
- 03-1 2025年度民主生活会主持讲话提纲.docx
- 02-1 会前学习-《县以上党和国家机关党员领导干部民主生活会若干规定》相关要求.docx
- 在2025年度民主生活会上的总结讲话三篇.docx
- 在2025年度民主生活会上的总结讲话三篇 (3).docx
- 市委宣传部2025年度民主生活会查摆问题整改方案两篇.docx
- 在市行政审批和政务信息管理局机关2026年全体干部政绩观教育大会上的党课讲稿.docx
- X市应急管理局2026年度安全生产监督检查计划.docx
- 2025年度民主生活会领导班子对照检查材料(五个带头)三篇.docx
- 2025年度民主生活会“五个带头”个人对照检查材料三篇.docx
原创力文档

文档评论(0)