采用ext模式开始OSGi

本文探讨了如何利用OSGi的类型加载机制(org.osgi.framework.bootdelegation)来简化基于SpringDM开发bundle的过程,通过配置org.apache.*,org.springframework.*允许父类加载器直接加载这些库,减少引入的bundle数量,实现最少仅需5个bundle启动应用。
摘要由CSDN通过智能技术生成
OSGi里面的bundle在开发中细分出模块间的边界,但是你如果遇到框架的时候有点麻烦,springDM就是一个典型,下载spring-osgi启动里面的demo大约有50多个bundle,甚至更多。当你基于springDM开发bundle的时候,你会发现你需要引入的太多,加上commom包,估计一个简单的bundle也要引入10多个包或者bundle,对于项目组开发要求太高。

如何简化呢?看看OSGi的类型加载机制你会发现这样一个参数org.osgi.framework.bootdelegation,org.osgi.framework.bootdelegation主要是定义是否采用父类加载器加载里面配置的类,bootdelegation可是支持通配符的哦,这样有了一个想法,对于spring框架和common包我们不需要引入bunlde了,直接让父类加载器去完成只需要配置org.apache.*,org.springframework.*即可,当加载的时候遇到apache和springframework的时候都是让父类加载器去加载即可。

父类加载器在OSGI里面可以采用osgi.parentClassloader去控制,默认是boot,不建议使用基本只能加载jre下面的几个jar,功能不够强大,可以采用ext或者app,我建议使用ext,自己定义java.ext.dirs的目录,这样只要jar包在此目录下即可以加载,至于app只要在你的classpath里面也行,但是不如ext那么方便。

经过试验通过OSGi+springDM+tomcat启动最少只需5个bundle(2个eclipse的,1个tomcat启动bundle,2个spring的extender)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值