`
zhu_chen001
  • 浏览: 22169 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

采用ext模式开始OSGi

阅读更多
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)
分享到:
评论
2 楼 zhu_chen001 2010-04-22  
楼上的这样的开发对于开发人员的要求较高,当然你们的和周边的关系也定义的充分。我上面说的方法主要目的是降低开发的难度,把bundle的依赖限制在业务自己开发的bundle里面,这样可以降低开发成本,同时升级基础库也容易些
1 楼 leon_a 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

相关推荐

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

    在实践中,采用OSGi进行Java应用架构设计时,开发者需要注意以下几点: 1. **模块定义**:明确每个模块的职责和边界,避免模块过大或过小,保持模块间的平衡。 2. **服务设计**:合理设计服务接口,确保服务的通用...

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

    Java应用架构设计中,模块化模式与OSGi是两种重要的技术,它们对于构建大型、可扩展且易于维护的系统起着关键作用。本篇将深入探讨这两个概念,以及它们如何协同工作来提升Java应用程序的效率和灵活性。 首先,模块...

    ext.bundle.osgi.common-1.0.8.zip

    《深入解析Gradle Android插件:ext.bundle.osgi.common-1.0.8.zip与开源项目的融合》 在当今的移动应用开发领域,Android Studio作为主要的集成开发环境,Gradle作为其默认的构建工具,已经成为了开发者不可或缺的...

    Java应用架构设计 模块化模式与OSGi,同时也包含了ArcGISAPIforJavascript开发教程的开发教程

    本教程主要涵盖了两个关键的知识领域:Java应用的模块化模式和OSGi技术,以及ArcGIS API for JavaScript的开发教程。下面将对这两个主题进行深入的阐述。 首先,Java应用架构设计中的模块化模式是一种组织代码的...

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

    Java应用架构设计、 如何进行模块化模式、与OSGi有什么联系?

    Java Application Architecture Modularity Patterns with Examples Using OSGi Part2

    Java应用架构设计:模块化模式与OSGi 英文版 中文版介绍: 全球资深Java技术专家的力作,系统、全面地讲解如何将模块化设计思想引入开发中,涵盖18个有助于实现模块化软件架构的模式 中文目录: 第一部分 模块化...

    OSGi的培训(商业模式,架构)

    **OSGi技术详解与商业应用** OSGi,全称为Open Services Gateway Initiative,是一种Java平台上的模块化系统和服务标准。它的核心在于提供了一种动态模块化的系统架构,使得开发者可以创建、部署和管理相互独立的...

    读书笔记:《Java应用架构设计模块化模式与OSGi》源代码.zip

    读书笔记:《Java应用架构设计模块化模式与OSGi》源代码

    OSGI 开发文档中文的

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建可模块化的Java应用程序。它提供了一种灵活的框架,使得开发者可以构建、部署和管理模块化组件,这些组件被称为服务或bundle。OSGI的核心理念是将...

    OSGI进阶.pdf

    6. **OSGi设计模式**:文档介绍了在OSGi中应用的设计模式,如树状设计模式和面向服务的设计模式,这些模式可以帮助开发者更好地组织和管理 bundles。 7. **OSGi最佳实践**:最后,文档总结了一系列OSGi的最佳实践,...

    OSGi入门教程(OSGi Introduce)

    2. **Eclipse集成开发环境**:Eclipse从3.0版本开始采用OSGi框架(Equinox),提升了性能、可扩展性,并简化了二次开发。 3. **企业级应用**:IBM WebSphere、BEA microServices、Apache Struts、Spring等均使用...

    osgi介绍osgi介绍

    OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它为开发人员提供了一种动态、模块化的运行时环境。在OSGi中,应用程序被分解为称为“bundle”的独立单元,这些bundle可以相互依赖并独立地加载、...

    基于OSGi的热插拔观察者模式

    本文将深入探讨如何利用OSGi的特性实现一个基于观察者模式的热部署系统。 观察者模式是一种行为设计模式,它定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动...

    OSGI 实例eclipse插件开发

    OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序由一系列可独立更新和替换的模块组成,这些模块称为“bundle”。在本实例中,我们将探讨如何利用OSGI技术来开发Eclipse...

    osgi学习笔记(一)

    在《OSGI进阶.pdf》这本书中,可能涵盖了更深入的话题,比如bundle的打包和部署、服务注册与查找、bundle间通信的协议(如白板模式和Declarative Services)以及如何使用OSGi进行企业级应用开发。这本书可能会详细...

    《Java应用架构设计-模块化模式与OSGi》书中源码,美国 Kirk著,张卫滨译

    《Java应用架构设计-模块化模式与OSGi》是一本由Kirk著、张卫滨翻译的书籍,它深入探讨了在Java环境中如何构建可扩展、可维护的大型应用程序。书中的源码提供了丰富的实例,帮助读者理解并实践模块化模式和OSGi...

    osgi进阶(中文)

    OSGi的设计模式,如树状设计模式和面向服务的设计模式,帮助开发者更好地理解和应用OSGi框架。此外,文档还提供了一系列OSGi最佳实践,如将接口和实现分离为不同的bundle、保持系统的动态性、搭建公司级的bundle ...

    OSGI

    例如,开发工具如Eclipse就广泛采用了OSGI架构,允许插件以独立的bundle形式存在,方便安装、更新和卸载。 在实际应用中,OSGI的源码分析可以帮助我们深入理解其工作原理。例如,可以研究其bundle的加载过程、服务...

    osgi,林昊写的osgi实战和进阶

    OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为一系列可独立部署、更新和交互的服务。林昊所著的《OSGI实战》与《OSGI进阶》是深入理解OSGI技术的重要参考资料,适合...

Global site tag (gtag.js) - Google Analytics