首页 > 生活, 高级民工 > 插件式开发OSGI

插件式开发OSGI

2013年1月2日 发表评论 阅读评论

  元旦这几天一直在思考以前的一个想法,想做一个整合了Spring+hibernate+struts+quartz等常用框架的可实现模块化插件式加载的系统,如果是针对某一单一功能而不考虑通用性扩展的话做出一个满足自己需求的框架还是相对简单的。
  为了减少配置,倾向于更多的采用注解,主要是在Spring这块,目前已经实现的可以看之前的两篇关于Spring和Hibernate动态加载的文章,不过在后续的实践中发现这些方法并不是很好。首先在Spring动态加载获取Bean的时候如果需要手动去获取某个Bean那么会存在线程安全问题,因为需要改变Spring的当前ClassLoader这肯定是会导致冲突的。Hibernate这块由于其本身类加载器以及SessionFactory不能动态加入类映射关系,所以考虑为每一个需要用到hibernate的模块单独创建一个SessionFactory,不过有两个问题,第一为每个模块都创建SessionFactory感觉比较浪费资源用同一个呢又没有好的方法;第二,一个模块中的Dao操作是没有问题的,但是存在跨模块的调用时Dao的操作将出问题,体现在事务方面,因为不同模块的SessionFactory不一样,所以会导致Session也不一样。
  OSGI这个目前应该说还是比较潮的技术,而且基于OSGI开发的成功软件也比较多,Eclipse是一个典型,Andorid底层也用到了OSGI的一些标准,现在比较流行的OSGI框架有Eclipse的Equinox和Apache的Felix,这两个属于OSGI标准的实现,但要自己去整合Spring和hibernate基于这些框架似乎也不是那么容易,另外Spring有个SpringDM的玩意儿这个东西整合了Spring使用了一下感觉还行但不是很完善,主要是配置麻烦文档偏少,另外SpringDM被捐给Eclipse之后有个新的版本叫Gemini Blueprint的东西,主体还是SpringDM,下载其提供的Server后即Virgo这个基于Equinox的OSGI实现并且整合了Spring的容器后感觉这个就是我想要的东西。

  最近的业余目标就是改造Virgo满足我的要求整合Hibernate和Quartz.并尽量减少无用的配置。

分类: 生活, 高级民工 标签:
  1. 2015年12月2日14:33 | #1

    OSGi最新的开源开发平台JXADF,相当震撼,可以说是OSGi开发的神器,详细参见:http://osgi.help

点击刷新