锁定老帖子 主题:基于osgi开发大型的企业应用
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-08
pufan 写道 skydream 写道 再次更新,分成3个层次
![]() 老兄,service定义bundle在哪里,你这样做common bundle怎么能够热插拔? 对于热拔插的支持,我个人感觉在business bundle这个层面上比较有可能有需求,对于common bundle,似乎实际意义不大。 打个比方说,有一个短信网关之类的应用,在business层面上,增加,卸载或更新某个业务能力是可能的,比如对smpp sms模块的更新,增加一个rest方式的sms模块,这个热拔插请求是比较合理的。对于common层,我不大理解为什么需要热拔插?比如说从提供datasource的bundle,难道是从mysql数据库切换到oracle?我对这块的需求和背景不大了解,pufan同学能否简单的介绍一下你遇到的场景:在类似我图中的common bundle的功能模块中,需要实现热拔插。这可以帮助我理解,谢谢! |
|
返回顶楼 | |
发表时间:2010-02-08
OSGi只是让"热插拔"成为了可能, 而不是一定能.
|
|
返回顶楼 | |
发表时间:2010-02-08
skydream 写道 pufan 写道 skydream 写道 再次更新,分成3个层次
![]() 老兄,service定义bundle在哪里,你这样做common bundle怎么能够热插拔? 对于热拔插的支持,我个人感觉在business bundle这个层面上比较有可能有需求,对于common bundle,似乎实际意义不大。 打个比方说,有一个短信网关之类的应用,在business层面上,增加,卸载或更新某个业务能力是可能的,比如对smpp sms模块的更新,增加一个rest方式的sms模块,这个热拔插请求是比较合理的。对于common层,我不大理解为什么需要热拔插?比如说从提供datasource的bundle,难道是从mysql数据库切换到oracle?我对这块的需求和背景不大了解,pufan同学能否简单的介绍一下你遇到的场景:在类似我图中的common bundle的功能模块中,需要实现热拔插。这可以帮助我理解,谢谢! 很常见的需求,举几个例子: DB bundle:更换数据库连接池大小、更改连接参数 Log bundle:更改log级别 Cache bundle:停用或启用cache,甚至从本地cache无缝切换到远程cache。 等等 用osgi最大的思想转变就是活用service,要注意这个‘活’字,不但要面向接口设计,更要充分利用osgi框架的service依赖及查找特性进行whiteboard pattern设计,那时你就会发现开发速度达到甚至超越传统框架也并不是不无可能的了。 |
|
返回顶楼 | |
发表时间:2010-02-09
DB bundle:更换数据库连接池大小、更改连接参数
Log bundle:更改log级别 Cache bundle:停用或启用cache,甚至从本地cache无缝切换到远程cache。 我怎么感觉这几个需求,不是只有通过热拔插才能完成。如果这几个模块设计的好,完全可以做到runtime 的动态配置。当然热拔插相当于推倒重来,做起来更简单一些。 |
|
返回顶楼 | |
发表时间:2010-02-09
最后修改:2010-02-09
更普遍的需求就是版本升级,当然这也是所有bundle的共有需求。
理论上来说,任何需求都不一定要热插拔,当然这也要求你的代码设计的“更好”。 |
|
返回顶楼 | |
发表时间:2010-02-21
jnn 写道 liu_swei 写道 jnn 写道 liu_swei 写道 目前国外很多开源的应用服务器都开始转向osgi了,比如:glassfish、jonas、geronimo、spring-dm、spring-osgi、pax-web等,我们目前做的是开发微内核集成框架,用的内核是karaf,karaf是felix的子项目,项目是开源的,大家感兴趣可以申请加入来为国产中间件做一份贡献:
http://www.trustie.net/projects/project/show/loong 不知道你们在Karaf基础上做了哪些改进,我们公司的Fuse ESB也是基于Karaf的,有空可以聊一聊。 我们重构了声明式服务,重构了日志服务,重构了热部署,定义了部署框架,现在可以部署war包,还可以随时扩展新的部署器、定义了协议处理器框架,定义了web容器框架同时集成了tomcat和jetty,并开发了dservice容器、集成opensso、集成数据源事物等等,下一步要重构karaf的内核 目前我们开源的只是微内核框架,以后会陆续开源所有的源码! 不知道你说的重构主要做了那方面的工作。 据我所知你上面提到的大部分功能 都是由karaf是通过pax-xxx 来实现的。 dservice容器、集成opensso、集成数据源事物, 这几个功能到是有点意思。 我现在有个问题就是如果Karaf升级了,你们的微内核框架需要做多大的修改才能使用新版本的Karaf. 呵呵,我们的重构更多的是功能上的,至于karaf内核,我们正准备重写它的内核 这样就不必依赖于它了,至于集成的jetty我们最初采用的的确是pax-web的,后来为了集成tomcat我们自己定一个了web容器框架,并重新集成了jetty,已经完全和pax-web无关了。 |
|
返回顶楼 | |