在传统的Ioc容器里,對象的生命周期一般为静态的,在初始化时创建后,就不会在运行期间撤下或替换。
在Blueprint容器中,可以引入OSGI服务引用,而OSGI服务是动态存在的,也就是说随时有可能由不可用变为可用或由可用变为不可用。
我们可以将一个bean发布出一个osgi服务,然后将这个服务的引用(reference)再注入另一个bean中,这个bean又可以再基于这个服务引用来实现并发布更高层次的服务……这样就可以一级级地装配出粗粒度的服务出来。
当在下层的服务被撤走时,上层强制依赖于它的服务也会被撤下,而下层服务再次恢复时,上层的服务又会快速地恢复,blueprint就是这样动态地装配这些服务。这种动态性可以得出一个推论:如果你能访问到上层服务,那么这个服务中依赖的下层服务的引用就不会为null,所以,用这种方式组装的应用就不会因OSGI的动态性而常抛出异常。
但是osgi服务始终只是个本地服务(暂抛开osgi remote service而言),需要提供给一些外部应用系统调用,才能发挥作用。
所以,要么你将应用建筑在blueprint容器里,通过将服务引用注入的方式使用这些osgi服务。要么你就在外部应用系统中引用blueprint的context,通过此context来查找并调用这些osgi服务,还有一种方式就是:blueprint容器在发布osgi服务的同时,也将这个服务注册到jndi registry上,外部应用系统就可以通过jndi来查找并调用这些osgi服务。
后面两种方式都脱离了DI的方式,不能确保服务在被调用时是可用的。而第一种方式则依然在DI的框架内,如果它调用服务,服务就是可用的,如果服务不可用,那么它也没机会去调用下层服务——因为那时连它自已也还没组装起来。
分享到:
相关推荐
标题中的“osgi gemini blueprint环境”指的是OSGi(Open Services Gateway Initiative)框架下的Gemini Blueprint服务。OSGi是一个模块化系统,它允许Java应用程序被分解为一系列可独立部署的模块,增强了软件的可...
- **Blueprint** 和 **Declarative Services** 是两种常见的Spring OSGi服务配置方式,它们都允许在OSGi中声明性地定义Bean和服务。 3. **Spring OSGi的应用场景** - **动态性**:OSGi环境下的Spring应用能更好地...
3. **Blueprint**:Spring的OSGI扩展,提供类似Spring XML配置的模块化服务定义方式。 4. **Aries SPI Fly**:一种用于将Spring应用转换为OSGI bundle的工具,保持原有Spring配置不变。 《OSGI_Opendoc.rar》可能...
5. **使用Blueprint或PAX Wiring**:这两个是OSGI的XML配置模型,它们提供了在OSGI环境中声明和管理依赖的方式,可以方便地与Spring配置结合使用。 6. **打包和部署**:将所有bundle打包成jar文件,并部署到支持...
Spring OSGi 是一个将 Spring 框架与 OSGi(Open Service Gateway Initiative)容器相结合的开源项目,旨在提供一种在 ...提供的压缩包文件可能包含了入门手册和示例代码,这些资源将有助于你快速上手 Spring OSGi。
5. **Blueprint或Declarative Services**:这两种是OSGi中的服务配置方式,Blueprint更接近XML,而Declarative Services使用注解,简化了服务的声明和管理。 6. **远程服务**:OSGi Remote Services允许Bundle之间...
**Spring OSGi 入门** Spring OSGi 是 Spring 框架与开放服务网关规范(OSGi)的结合,它为基于 Java 的应用程序提供了模块化开发的能力。OSGi 是一个动态的、模块化的运行时环境,使得开发者可以创建可热插拔的...
相关技术文章可能深入探讨了OSGI的高级特性,例如: Blueprint Container用于在OSGI环境中实现依赖注入,它简化了服务的创建和管理;felix-configadmin服务允许动态配置bundle;还有OSGI的远程服务(Remote Services...
7. **Blueprint服务**:OSGI的Blueprint规范提供了一种在OSGI环境中声明式地定义服务和依赖的XML格式,与Spring的XML配置类似,但更适合OSGI环境。 8. **冲突管理**:在OSGI环境中,多个bundle可能提供相同的服务,...
在提供的压缩包文件名称“Tomcat-OSGi-QuickStart”中,"QuickStart"通常表示这是一个快速入门或示例项目,帮助用户快速理解和实践如何在Tomcat中配置和使用OSGi。这个压缩包可能包含了预配置的Tomcat服务器,示例...
可能会包括如何创建和打包OSGi Bundle、配置Manifest文件(包含Bundle的元数据)、使用Blueprint或Declarative Services进行服务声明、理解OSGi的生命周期管理以及如何在实际项目中应用OSGi技术。 **OSGi原理与最佳...
10. **支持最新的 OSGi 4.2 容器**:Karaf 兼容最新的 OSGi 4.2 规范,确保了与最新标准的一致性。 #### 快速入门 ##### 安装 Karaf 1. **下载 Karaf**:从 Apache Karaf 官方网站下载最新版本的 Karaf。 2. **...
- **OSGi 4.2 Blueprint Reference Implementation (RI)**: 实现了最新的 OSGi Blueprint 规范。 - **Java 5**: 兼容 Java 5 及以上版本。 - **Spring 3.x**: 兼容 Spring 3.x 版本。 - **服务导入改进**: 增强了...
输出包括bundle的ID、状态、Blueprint或Spring XML文件的bean创建情况、启动级别以及名称和版本。通过管道和命令行工具,可以方便地搜索特定的bundle,例如查找与"Camel"相关的bundle。 4. **使用Apache ServiceMix...
- **Apache Karaf**:这是一个小型的基于OSGi的运行时环境,允许部署应用程序。 - **Apache MINA**:这是一个高性能的、基于NIO的网络框架。 4. **集成模式**: CAMEL支持多种集成模式,这些模式定义了企业应用...
- Apache Karaf:一个小型的基于OSGi的运行时环境,其中可以部署容器代理的应用程序。 - Apache MINA:一个高性能的NIO驱动的网络框架。 Camel的核心概念在于它的集成模式,它们是一种设计模式,可以用来指导集成...