论坛首页 Java企业应用论坛

采用ext模式开始OSGi

浏览 3061 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-04-21  
SOA
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)
   发表时间:2010-04-21  
zhu_chen001 写道
当你基于springDM开发bundle的时候,你会发现你需要引入的太多,加上commom包,估计一个简单的bundle也要引入10多个包或者bundle

我们是编写LIBD文件,然后用STS工具在MANIFEST.MF文件里import-library这种形式引入第三方类库。
如果自己编写的bundle有依赖的时候,采用普通的import-bundle形式。环境是spring-osgi,sprng dm server
0 请登录后投票
   发表时间:2010-04-22  
楼上的这样的开发对于开发人员的要求较高,当然你们的和周边的关系也定义的充分。我上面说的方法主要目的是降低开发的难度,把bundle的依赖限制在业务自己开发的bundle里面,这样可以降低开发成本,同时升级基础库也容易些
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics