`
mochow
  • 浏览: 286063 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

OSGi笔记(3)--模块化

阅读更多
模块化是OSGi框架的主要部分之一,说到模块化,主要还是指bundle,以及对bundle之间关系的处理。

bundle的主要组成部分就是类(class)文件,class文件是bundle的可执行部分。在java中,类文件被组织到包里,每个包都有唯一的名字。

限制类仅对本地访问(私有bundle)是最简单的解决方法。

共享类使得bundle包含一些给其他bundle的库。可以依赖本地功能(或是根据需要下载)使得bundle可以更灵活和更小巧,从这个角度来看,共享类是最好的解决。

然而,共享类意味着多个bundle可以提供同一个类,潜在的导致不同bundle中同一个类的版本不兼容问题。一个相关的问题就是对其他bundle的依赖。同样也有可能不同套的bundle使用同一个类,但需要该类的不同版本。OSGi用严格的规范和确定的方式来处理所有这些问题。

每个bundle都可以输入输出包(packages)。输出意味着这个包(一系列类)可以被其他的bundle使用。输入意味着需要使用的这个包是来自其他bundle的。如果多bundles同时输出相同的包(可能是不同的版本),则框架将为每个输入该包的bundle选择一个合适版本。

一个输出的package总是有唯一的版本。而输入者可以指定一个可以接受的版本范围。Framework尽力最小化输出的数量,但它支持同一个类的多版本的多类空间可以在同一时间使用。为了防止冲突,Framework要确保bundle注意获取class cast Exception.<o:p></o:p>
<o:p>
</o:p>
如果bundle输出一个java包,后来这个bundle被卸载了,OSGi Framework确保输入者都重起,以便它们能够和新的输出包绑定。这整个过程对bundle而言是透明的,因为是在它们停止的时候进行的。<o:p></o:p>


JVM中为多个独立的bundle管理java类导入是很重要的任务。这个复杂领域里不同厂家的依从关系是由特定的小细节来完成的,这是OSGi Framework在所有情况下必须要做的。<o:p></o:p>


分享到:
评论
5 楼 hatalf 2007-07-16  
现在做到OSGI和HIBERNATE整合这块了,郁闷的很,由于2个classload运行在不同的JVM的缘故,老是找不到类.OSGI好是好,但是由于做的过程中老出现问题,要么和这个结合不好,要么和那个不能互相调用,唉....总以为要正常整合的时候突然出个大问题又要慢慢来...时间啊....都被错误冲走了...
4 楼 mochow 2007-07-10  
我看的就是英文的,OSGI自己的文档。不过发现还是有技术人员的老毛病,写概要写着写着就深入到编程细节去了,没有全局观。
3 楼 hatalf 2007-07-09  
刚刚把项目用到OSGI里,结合tomcat做的~希望有时间能写点东西上来呵呵~ 建议多看英文资料。。。那个中文的。。。我寒。。IBM的和equinox的都比较不错~还有neil的blog~peter的,都是学习的好地方!
2 楼 mochow 2007-06-25  
  内容少是因为花的时间少。另外,这都是看概要的笔记,还没深入呢。


俺真是太不勤奋了,以后要继续学习。
1 楼 hatalf 2007-06-22  
没次的内容有点少,而且不够到位,建议你看看勤劳的蜜蜂的blog上对OSGI的讲解,我个人对你的笔记(1)比较赞赏,希望继续!最好是写出一个实际的例子来慢慢分析,代码少点就比较好.

相关推荐

    『原创』OSGI研究笔记1 - Equinox ServletBridge模式下调用Datasource

    OSGI是一种模块化系统,允许动态地部署、升级和卸载Java应用程序的组件,而Equinox是Eclipse基金会提供的一个OSGI实现。ServletBridge则是让OSGI环境与Servlet容器(如Tomcat)协同工作的一种工具。 描述中虽然没有...

    SpringDM笔记28-Spring And OSGi:Layers of Integration

    这篇笔记可能探讨了如何将Spring的功能与OSGi的模块化优势相结合,以实现更灵活、可扩展的应用。 由于描述中没有提供具体信息,我们可以基于标题来推测笔记可能涉及的内容: 1. **OSGi简介**:笔记可能首先介绍了...

    SpringDM笔记7-开发SpringDM Bundle

    OSGi是一种Java模块化系统,它允许开发者将应用程序拆分成独立的、可热插拔的模块,每个模块称为一个Bundle。SpringDM提供了一种在OSGi容器中使用Spring IoC(Inversion of Control)和AOP(Aspect-Oriented ...

    SpringDM笔记31-Testing with OSGi and SpringDM

    OSGi(Open Service Gateway Initiative)是一种Java模块化系统,允许动态地发现、加载和卸载服务。SpringDM(Spring Dynamic Modules)是Spring框架对OSGi的支持,它简化了在OSGi环境中开发和管理应用程序的过程。 ...

    SpringDM笔记13-OSGi服务注册与引用

    在SpringDM(Spring Dynamic Modules)框架中,OSGi(Open Service Gateway Initiative)服务注册与引用是核心功能之一,它使得模块化系统中的组件能够互相发现并交互。本篇笔记将探讨如何在OSGi环境中注册服务以及...

    osgi学习笔记(二)

    OSGi是一种Java模块化系统,它允许开发人员创建可独立更新和依赖管理的模块,极大地提高了软件的可维护性和可扩展性。以下是对这一主题的详细分析: 1. **OSGi概述** OSGi起源于20世纪90年代末,最初是为了解决...

    osgi学习笔记(一)

    在IT领域,OSGi是一种模块化系统和Java服务平台,它提供了一种动态管理软件组件的能力。本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和灵活的Java应用程序。 首先,我们需要了解OSGi的核心概念...

    Felix笔记1-构建BookshelfProject

    Apache Felix是一个流行的开源实现,遵循Java企业版(Java EE)中的服务组件运行时(OSGi)规范,用于创建模块化应用。在这个项目中,开发者可能在学习如何将应用分解为可独立更新和管理的模块。 描述中提到的链接...

    SpringDM笔记6-Fragment及配置Log4j Fragment Bundle

    Spring DM是Spring框架在OSGi(Open Service Gateway Initiative)环境下的扩展,它允许在模块化环境中管理Spring应用程序。 首先,让我们了解什么是Fragment Bundle。在OSGi框架中,Bundle是基本的部署单元,类似...

    OSGI学习笔记.doc

    OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle包含自己的类加载器和资源。这些bundle可以通过动态安装、启动、停止、更新和卸载...

    osgi karaf笔记

    OSGi(Open Service Gateway Initiative)是一种Java平台上的模块化系统和应用编程框架,用于构建可动态部署、管理和更新的模块化应用程序和服务。Karaf则是一个基于OSGi的容器,提供了丰富的功能和命令行接口,使得...

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

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

    osgi学习笔记(三)

    在本篇OSGi学习笔记中,我们将深入探讨OSGi(Open Service Gateway Initiative)这一模块化系统,特别是关于服务方面的知识。OSGi是一个Java平台上的动态模块化系统,它允许开发者创建可热部署、互相依赖的模块,...

    OSGi入门笔记

    OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许开发人员创建可独立部署、可热更新和可交互操作的模块化应用程序。本文将深入介绍OSGi的基本概念,包括其与J2EE的对比,以及模块...

    OSGi原理与最佳实践 学习笔记 一

    通过OSGi框架,开发者能够创建具有高度模块化和动态化的Java系统,这些系统可以灵活地进行服务的注册、发现和升级。 OSGi Alliance成员共同开发并免费提供规范,但兼容性程序只对成员开放。目前OSGi Alliance有12个...

    eclipse插件开发学习笔记15-24章

    10. **运行时模型(Runtime Model)**:Eclipse插件在运行时以OSGi模块的形式存在,理解OSGi服务的概念和运行时模型对于深入插件开发至关重要。 11. **调试(Debugging)**:Eclipse作为强大的IDE,其插件开发也...

    eclipse插件开发学习笔记1-14章

    Eclipse基于OSGi框架,每个插件都是一个独立的模块,通过声明依赖关系与其他插件协同工作。在开始开发之前,你需要安装Eclipse IDE并配置相应的插件开发环境,这通常包括安装Plugin Development Environment (PDE)...

    Eclipse插件开发学习笔记-源代码1至24章.zip

    每个Eclipse插件都是一个独立的OSGi模块,可以导入和导出服务,确保运行时的动态性和模块化。 第一章通常会介绍Eclipse插件开发环境的搭建,包括安装Eclipse IDE for RCP and RAP Developers、配置插件开发工具PDE...

    很久之前的osgi整理

    OSGi(Open Service Gateway Initiative)是一个Java模块化系统,它允许开发人员将应用程序分解为独立的模块或服务,这些模块可以独立地安装、升级、启动和停止,而不会影响其他模块。这一特性在大型企业级应用和...

Global site tag (gtag.js) - Google Analytics