`

基于osgi开发大型的企业应用

阅读更多
    前端时间认真的学习了一下osgi相关的知识,个人感觉是非常的不错。

    但是看了一下目前osgi的时候,几个成功案例都是基于osgi开发ide,比如eclipse之类。还没有看到用于企业应用的成功案例,是osgi不适合开发企业应用?还是说,目前没有人这样开始使用osgi?或者只是我孤陋寡闻,其实大家已经用开了?

    顺便说明一下为什么有这种的疑问,这个要冲java开发application的方式说起,我接触过的无非是两种:

    1. 简单的j2se的application
        就是自己写代码,编译打包,然后写一个命令行脚本或者shell,通过java 和main class启动java进程,里面爱干嘛干嘛。
        好处是简单,小巧,灵活,没有额外的负载。缺点嘛,没有模块化的支持,想安装,卸载,启动,停止,更新其中部分功能时,完全没辙,只能整个退出,更新之后重启启动。不过对于小程序倒不是问题,大型系统就不大可能了。
        这个是轻量级的解决方法。

    2. 大而全的app server
        这个就是标准的j2ee,weblogic,glassfish,jboss之类的都是了,提供标准的j2ee容器,完整的j2ee支持,诸如ejb之类,总之什么都有了。自己写代码,打包为app,通过ear,war等方式发布,对其中的任何一个app,安装,卸载,启动,停止都是可以通过控制台搞定的。
        很强大,但是很“重“,非常的重,像我在的团队,目前开发的东东,启动起来什么不跑就吃了1g内存......
        这个方案会带来一个问题,当模块被打包在不同ear中时,无法使用java的方法调用,只能通过ejb,或者自己开端口等方式进行远程调用。效率方面不好,而且感觉也挺傻的:同一个机器同一个进程,彼此直接访问还要走远程......在weblogic上可以通过将功能模块打包在同一个ear中,开启 ejb的local call优化为本地访问,但是限制是只能在一个ear中,这又破坏了模块化。
      
    从个人爱好和经历来说,我喜欢第一种方式的轻巧,比较讨厌2的笨重。但是1的缺点也很明显,当程序大到一定程度,功能模块越来越多的情况下,就不适用了。上面的例子,那个启动就吃1g内存的家伙,它的java project现在都超过200个了,可以想象有多大吗?如果用1的方式来开发,根本不可能啊。

    再有就是个人审美观的问题,我这个人生性比较反感庞大而复杂的东西,可以说j2ee 容器/ejb(尤其是ejb3.0以前)是完全违背我的美感的,虽然我现在靠这个吃饭,恩,似乎有点偏激......

    所以现在想看看有没有第三条路可以走(恩,当然工作方面2是肯定无法避免的了),我自己现在想到解决方案就是基于osgi,将不同的功能模块划分为不同的 bundle(当然可以继续按照service细分)。这就避免了1原有的最大不足:无法划分模块来适用和管理,同时也绕开了app server这个大块头。

    稍后准备按照这个思路来开发一个application来练练手,试试可行性如何。比较看好这个思路的前景,但是目前没有信心,呵呵,主要是没有看到类似的案例,不知道该怎么着手,更别提什么最佳实践之类的可供参考。

    颇有摸石头过河的感觉,有朋友可以帮忙指点一二吗?网上可以找到的osgi的内容,基本都停留在简单介绍和高度评价上,没有找到实际的可供参考的东西。哪位同学如有osgi方面的知识请不吝赐教,不胜感激啊!

    非常有诚意的希望能有人和我一起深入探讨这个话题,无论是赞成还是反对.

ps: 因为在标题中有“请教”的字眼,被自动转移到问答频道了。我想了一下,我发这个帖子的主要目的还是为了可以找人讨论,而不是一个简单的问答。因此厚颜将请教二字从标题中去除后再发贴一次,

    
分享到:
评论
56 楼 javaonejcy 2010-02-03  
skydream 写道
javaonejcy 写道
对应用过于复杂的技术就是无用的技术。osgi离成熟尙远。


这个不敢苟同,osgi已经足够成熟了,只是它设计的初衷不是针对企业开发,所以目前迁移到企业开发时遇到比较多的问题。至少在ide,app server基本是不二选择,怎么至少给出“无用”的评价。



不好意思,我说的那句话过于简略了。其实我想说的是,osgi用在企业开发中还不够成熟。不成熟所以应用困难,所以难推广,也就是“无用”了。
55 楼 jnn 2010-02-03  
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.
54 楼 hatedance 2010-02-03  
说到“企业开发”,我目前从事这个行业。我觉得企业开发和互联网开发不同,一般的企业开发对技术要求低,对超大并发量也没什么要求,不需要华丽的界面。说起来似乎没什么技术含量,当然它的特点是围绕多变的业务,结合工作流,基于数据库,界面基本以表单为主。
我很希望做企业开发的同学们能一起搞个圈子,共同交流。
53 楼 skydream 2010-02-03  
javaonejcy 写道
对应用过于复杂的技术就是无用的技术。osgi离成熟尙远。


这个不敢苟同,osgi已经足够成熟了,只是它设计的初衷不是针对企业开发,所以目前迁移到企业开发时遇到比较多的问题。至少在ide,app server基本是不二选择,怎么至少给出“无用”的评价。


52 楼 javaonejcy 2010-02-02  
对应用过于复杂的技术就是无用的技术。osgi离成熟尙远。
51 楼 liu_swei 2010-02-02  
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的内核
目前我们开源的只是微内核框架,以后会陆续开源所有的源码!
50 楼 shijiyu 2010-02-02  
希望楼主在研究的过程当中 与我们分享经验哈
49 楼 newlife111 2010-02-02  
defrag_sly 写道
听说淘宝网是OSGI架构

扯淡,没有osgi,硬件成本和部署成本都不知道被吃掉多少,开发还得忍受沟通和协调的无尽的折磨。
48 楼 pufan 2010-02-02  
可以做PAAS呀,试想:
1)前台Swing(SWT)架构,自动升级插件,富客户端完美用户体验。
2)后台可根据用户需求定制bundle,热插拔,随改随上线。

All in java,开发速度与产品竞争力兼得,嘿嘿。
47 楼 yefeng 2010-02-02  
skydream 写道
yefeng 写道
skydream 写道
defrag_sly 写道
听说淘宝网是OSGI架构


有没有什么公开的可供参考的资料啊?

还没有应用到WEB项目中, blueDavy在淘宝


no,no,我不大关心WEB项目的。。。。

blueDavy的大名早就知道了,我就是从看他的opendoc和书开始学osgi的。

2010年,可能会有比较大的突破吧,现在都在尝试,blueDavy主管的项目,已经是基于了OSGI开发的,是个高性能通信的框架
46 楼 hzh0725 2010-02-02  
SeviceMix 4就是基于osgi开发的,大家可以看看他的代码
45 楼 yuanyi_wang 2010-02-02  
再说个个人感觉,呵呵

做OSGI前,前确定你真的需要插件机制吗?各个插件之间真的能相互隔离吗?
插件可以分为基础插件和非基础插件,基础插件就是不启动这几个插件,系统就无法运行;其他插件之间就应该是可以相互隔离的了。
如果你所有的插件间,都是互相依赖的,那还是算了吧,直接用传统的也许更简单。

当然,如果你想单独升级,插件之间的通信是异步的,用OSGI还是有用的,但是设计目的(目标)就不一样了。
44 楼 hatedance 2010-02-02  
我看osgi是个好东西,但凡事都有代价。
一个插件系统,首先就是允许你选择可加载的插件(所谓disable/enable),然后更进一步允许动态启动/停止/升级。
普通的插件系统就已经如此强大了,osgi则更进一步,把插件体系做得更灵活,允许自定义扩展点。这一点对于ide这样的应用显然是很有价值的。但对于我们通常的应用场合,一般不需要,比如不需要为插件再定义几个扩展点,然后再定义几个插件。总之,那是一种树型的结构,插件依赖插件。
我想大部分人对普通的插件系统已经很满意了,就像firefox的插件系统。插件之间反正也没什么关系。比如传统的企业应用,我们只要把一个表单作为一个插件,对应一个菜单项即可。
但无论是firefox还是eclipse,只要你升级了一个插件,都强烈建议你你重启整个系统。虽然eclipse号称是osgi的。
43 楼 skydream 2010-02-02  
yefeng 写道
skydream 写道
defrag_sly 写道
听说淘宝网是OSGI架构


有没有什么公开的可供参考的资料啊?

还没有应用到WEB项目中, blueDavy在淘宝


no,no,我不大关心WEB项目的。。。。

blueDavy的大名早就知道了,我就是从看他的opendoc和书开始学osgi的。
42 楼 yefeng 2010-02-02  
skydream 写道
defrag_sly 写道
听说淘宝网是OSGI架构


有没有什么公开的可供参考的资料啊?

还没有应用到WEB项目中, blueDavy在淘宝
41 楼 songfantasy 2010-02-02  
关注OSGI的web开发
40 楼 wangzaixiang 2010-02-02  
我们在2009年度基于OSGi重新设计了我们的自助终端服务的后台系统。技术方面,主要基于:
* OSGi
* Spring DM
* 每个业务设计成为相对隔离的服务(我们称之为交易码),每个服务对应于一个OSGi的服务,在开发上对应一个Spring POJO Bean
* 业务开发除按着OSGi的规范进行隔离、打包外,POJO本身基于Spring的DI模式,不依赖于OSGi(没有任何与OSGi直接相关的依赖)
在应用OSGi的过程中,我的感觉是:
* OSGi帮助我们更好的实现了业务的隔离和模块化设计工作。没有依赖关系是最好的关系,这个是我们的目标。
* 每个模块有更清晰的职责、更简单的依赖关系、更简单的代码、更容易进行单元测试。
* OSGi对于服务部署来说,是非常合适的一个容器。相比一个整体的软件,OSGi帮助我们更好的实施服务。
* 基本上,OSGi在我们的项目中,没有给我们的开发带来额外的开销。不过,单元测试方面,大部分的单元测试都需要在容器内进行,更麻烦一些。这个可能与我们现在的开发方式有关系。后续可能需要再改进。

总的说来,感觉Spring DM与OSGI相结合是一个很佳的选择,基本上可以实现业务代码与OSGi本身的隔离。
39 楼 skydream 2010-02-02  
defrag_sly 写道
听说淘宝网是OSGI架构


有没有什么公开的可供参考的资料啊?
38 楼 skydream 2010-02-02  
yefeng 写道
应该说osgi要大规模推广,还有很多路要走,现在小搞搞不少,运用到大规模系统几乎没有,这其中有很多考虑,技术成本,学习成本,还有遇到问题的时候,解决问题的成本, 风险太大


对于商业项目,风险的确是一个非常重要的考虑,目前情况下全面转向osgi是非常需要自信和勇气的。

不过对于个人而言,练练手还是不错 熟悉之后以后也许就用的上,我个人感觉模块化和面向service应该会是未来java企业开发的发展方向,所以提前尝试一下按照这种思路来设计规划系统,希望能从这个过程中学习到一些新的东西。
37 楼 defrag_sly 2010-02-02  
听说淘宝网是OSGI架构

相关推荐

    基于OSGi和Spring开发Web应用

    综上所述,基于OSGi和Spring开发Web应用不仅能够充分利用OSGi的模块化优势和Spring的依赖注入机制,还能借助dmServer和SpringSource应用平台等工具,实现更加高效、灵活和可靠的企业级应用开发。

    基于OSGi和Spring开发Web应用教程

    在基于OSGi和Spring开发Web应用中,OSGi(Open Services Gateway Initiative)是一个开放标准,用于创建模块化Java应用程序。它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle都包含自己的类路径、...

    基于OSGi的分布式Web应用结构.pdf

    文章提到的实验验证了基于OSGi的分布式Web应用结构可以优化大型Web应用结构的设计,表明了这种结构在实际应用中具有可行性和优势。通过测试和研究,可以为开发者提供专业的指导和参考。 总结而言,文章深入探讨了...

    基于OSGi的Web应用开发系列(全).pdf

    **基于OSGi的Web应用开发**是现代软件开发中的一种技术实践,它允许开发者构建模块化、可扩展和可维护的Web应用。OSGi(Open Service Gateway Initiative)是一种开放的标准,提供了一种服务导向的、模块化的Java...

    基于OSGi和Spring开发Web应用.doc

    随着技术的发展,SpringSource应用平台进一步整合了OSGi、Spring和Apache Tomcat,提供了一个全新的应用服务器,该服务器不再遵循传统的Java EE标准,而是充分利用Spring编程模型,以及基于OSGi内核的部署和打包系统...

    OSGi开发环境建立和Hello World

    这样的实践对提高应用程序的可维护性和扩展性具有重要作用,也符合现代企业对于大型系统开发的需求。随着Java模块化技术的不断成熟,掌握OSGi技术将变得越来越重要,对于开发者而言,不仅是一项技能,更是职业发展的...

    osgi框架开发介绍

    2. **企业级应用**:在大型企业应用中,OSGi可以帮助构建松耦合的组件,便于开发、测试和部署。 3. **IDE和工具平台**:Eclipse IDE就是一个基于OSGi的平台,其插件系统就是OSGi服务模型的体现。 四、学习资源 ...

    基于osgi构建小例子

    **基于OSGi构建小例子** OSGi(Open Service Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序拆分成独立的、可管理的模块,这些模块可以动态地安装、卸载和更新,而不影响系统的其他部分。在...

    基于 OSGI 的 RCP 测试 2 Standard

    在基于OSGi的RCP应用程序中,各个组件(如视图、编辑器)可以被封装为独立的OSGi bundles,这样可以实现模块化的开发和部署。开发者可以轻松地添加、更新或移除应用的特定部分,而不会影响整个应用的稳定性。此外,...

    基于osgi框架实战源码

    "基于osgi框架实战源码"的学习资料为开发者提供了一个宝贵的实践平台,通过实际操作可以加深对OSGi的理解,提升在大型复杂系统中的模块化开发能力。在深入学习源码的过程中,不仅要关注代码逻辑,还要理解其背后的...

    基于Eclipse的Equinox框架开发OSGi Bundle应用

    【标题】基于Eclipse的Equinox框架开发OSGi Bundle应用 在Java世界中,OSGi(Open Services Gateway Initiative)是一种模块化系统,它允许开发者创建可独立更新和依赖管理的模块,即Bundle。Eclipse的Equinox是...

    osgi开发jar包

    创建OSGi开发的jar包涉及到以下几个关键知识点: 1. **Bundle基础知识**:一个OSGi bundle本质上就是一个遵循特定规范的JAR文件,其中包含了MANIFEST.MF文件。这个文件包含了关于bundle的重要元数据,如Bundle-...

    基于OSGi的分布式系统集中日志管理方案.pdf

    这种基于OSGi的日志管理方案以插件形式部署到应用程序中。这意味着系统管理员可以随时卸载这个OSGi插件,让应用回到使用原始的本地日志存储方式。这种方法的优点在于它的灵活性和便利性,可以根据需要快速切换日志...

    基于OSGi的面向服务的组件编程.pdf

    例如,IBM的WebSphere Application Server和Rational Software Architecture均基于OSGi开发。 使用Eclipse开发OSGi应用非常方便,Eclipse提供了完整的工具链来支持bundle的开发、调试、部署和测试。开发者可以通过...

    Java应用架构设计 模块化模式与OSGi.zip

    Java应用架构设计中,模块化模式与OSGi是两个关键概念,它们对于构建大型、可扩展且易于维护的系统至关重要。模块化模式使得代码组织更加有序,而OSGi(Open Services Gateway Initiative)则是一种实现模块化的动态...

    OSGI企业技术规范

    该规范旨在提供一个灵活且可扩展的框架,支持复杂的企业级应用开发与部署。 #### 二、OSGi核心框架解析 ##### 1. 模块化架构 OSGi的核心框架基于模块化的理念设计,每个模块被称为“Bundle”。这种模块化设计使得...

    osgi介绍osgi介绍

    3. **开发工具**:Eclipse IDE就是基于OSGi构建的,其插件系统也是OSGi的一种应用实例。 4. **云平台**:OSGi的动态性使其适合云环境中的服务部署和管理。 ### OSGi的挑战与实践: 1. **复杂性**:OSGi的模块化和...

    深入理解OSGi:Equinox原理、应用与最佳实践源代码+equinox-SDK-3.8源代码

    OSGi(Open Services Gateway Initiative)是一种开放标准...通过这本书和源代码的学习,开发者可以深入理解OSGi和Equinox的工作原理,掌握如何构建、管理和维护基于OSGi的复杂Java应用程序,提升软件设计和开发能力。

    基于SpringDM的WEB应用开发

    至觉得用这种方式开发基于OSGi WEB应用比使用Spring DM Server更好至少目前你可以获得更好便携性(可以 在多个Spring DM支持OSGi平台上运行)并且Spring DM Server并没有提供更多企业应用支持 不过对于刚 使用Spring ...

Global site tag (gtag.js) - Google Analytics