Felix框架中当注册新的服务时,会遍历触发所有满足条件的服务监听器。
如果系统中存在大量服务监听器时,新服务的注册性能明显下降。
实测数据,当服务监听器数量达到接近4000个时,新注册300个服务,
耗时将近20秒(CPU:i3双核,4G内存)。
----------
如果系统使用Felix,组件框架使用ipojo,可能会产生这样的情况。
ipojo的机制,每声明一个Component/Instance,每增加一个@Require/Bind
(即对其他服务的依赖),都会产生新的服务监听器,从而导致系统内存在
大量的服务监听器。
这些服务监听器的过滤表达式通常稍微复杂,例如:
(&(objectclass=org.apache.felix.ipojo.extender.ExtensionDeclaration)(ipojo.extension.name=component))
这样的形式。每一个新的服务注册或者修改,都会触发所有的监听器过滤表达式
被执行。
查看Felix框架关于服务注册时触发服务事件的代码,大概:
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(
this, Request.SERVICE_EVENT, listeners, event, oldProps);
相关推荐
在描述中提到的“框架运行环境”是指 Apache Felix 为运行 OSGi 应用程序提供的基础环境,包括启动器、类加载器、服务注册表等核心组件。这些组件共同确保了 OSGi bundle 之间的隔离性和协作性,使得不同 bundle ...
【标签】:“Felix”作为标签,意味着主要关注点在于Felix框架本身及其在华为环境中的应用。Felix框架的核心特性包括服务注册与发现、动态模块加载、依赖注入等,这些都是OSGi规范的重要组成部分。开发者可以利用...
felix软件包是Apache Felix项目的一部分,它是一个开源的实现,完全符合OSGi(开放服务网关倡议)规范的框架。OSGI是一种模块化系统,主要用于Java应用程序,它提供了动态模块发现、加载和管理的能力,使得开发人员...
**Felix 2.0.4:OSGi实践中的关键框架** Apache Felix是Apache软件基金会开发的一款开源OSGi实现,它遵循OSGi规范并提供了一种灵活、模块化的Java应用程序开发方式。OSGi(Open Services Gateway Initiative)是一...
标题中的"Felix小例子"指的是一个使用Felix框架的示例项目。Felix是Apache软件基金会的一个开源项目,它是实现OSGi(开放服务网关规范)标准的Java框架。OSGi是一种模块化系统,用于管理和运行Java应用程序,使得...
在IT行业中,OSGI(Open Services Gateway Initiative)是一种模块化系统和Java应用程序框架,它...在实际开发中,你可能还需要学习更多关于OSGI服务、生命周期管理和配置管理的知识,以便更好地利用这个强大的框架。
文档目录,提供关于Felix框架6.0.1版的API参考、用户指南、开发者文档等。这些资料对学习和理解如何使用和扩展Felix框架至关重要。 **OSGi核心概念:** 1. **Bundle**:OSGi的核心组件,类似于Java的JAR文件,但...
2. **动态性**:在Felix中,jar包可以被动态地安装、启动、更新和卸载,而无需重启整个系统。这种灵活性使开发者能够实现热部署和热更新,提高系统的响应速度和稳定性。 3. **依赖管理**:Felix的OSGi框架提供了一...
在"org.apache.felix.main.distribution-4.2.1.zip"这个压缩包中,主要包含的是 Apache Felix 框架的核心组件,特别是 "felix-framework-4.2.1" 文件,这是 Felix OSGi 框架的实现。下面将详细介绍这个压缩包中的...
标题中的"felix-framework-5.6.8"指的是该框架的5.6.8版本,这通常是发布的一个稳定版本,包含了错误修复、性能优化和可能的新功能。 在描述中提到"想找个felix插件版的,可惜404",这意味着用户可能在寻找与Felix ...
2. **依赖管理**:Apache Felix支持声明性服务,允许bundle声明它们需要的其他服务及其版本,框架会自动解决依赖关系。这使得组件间的依赖关系清晰,便于理解和维护。 3. **服务注册与发现**:OSGi框架提供了一个...
- **启动流程**:通过分析`src`中的代码,我们可以了解Felix如何初始化、加载配置、处理bundle生命周期和启动服务。 - **事件处理**:查看事件监听器和回调函数,理解bundle如何响应框架事件。 - **服务注册和查找**...
在 "apache-felix-demo" 中,“order”可能是演示中的一个模块或服务,可能包含了处理订单相关的业务逻辑、数据模型和服务接口。这个子目录可能包含 Java 源代码、配置文件和打包好的 bundle。 8. **部署与调试**...
- 结构原理:Web容器注册Struts OSGi监听器,监听器控制Apache Felix Host,Felix Host启动和管理Felix Framework,而Struts OSGi Plugin监听bundle的变化,当检测到Struts bundle时,加载相应的Struts配置。...
通过研究这些组件,开发者可以了解到如何创建和管理OSGi bundle,以及如何在Felix框架中实现服务的发布和消费。此外,源代码还包含了丰富的示例和测试用例,可以帮助理解如何在实际应用中使用Felix。 总之,Felix ...
3. **动态性**:Apache Felix允许模块和服务在运行时动态地安装、启动、更新和卸载,这在传统Java应用程序中是难以实现的。 4. **配置管理**:Felix提供了一种机制来管理和更改组件的配置,使得应用程序可以在运行...
4. **使用Felix SCR**:Apache Felix Service Component Runtime (SCR)是OSGi服务组件的实现,它允许你在OSGi环境中声明和管理组件。在Spring Bean上使用@Component和@Service等注解,声明它们为OSGi服务。 5. **...
这个文件包含了Apache Felix框架的所有组件和必要的依赖,方便用户在自己的环境中部署和使用。 Apache Felix是Apache软件基金会的一个开源项目,它是OSGi(Open Services Gateway Initiative)规范的实现。OSGi是一...
- **插件机制**:Felix Plugin是指在Felix环境中运行的特定功能扩展,例如,提供新的服务、管理其他bundle等。 3. **Felix Plugin的应用**: - **服务注册与查找**:插件可以注册服务到OSGi服务注册表,其他...
- 将 Felix 目录中的内容复制到该 Java 工程中。 - 添加 `felix.jar` 到构建路径中。 - 配置 Run Configuration 来启动 Felix。 4. **启动 Felix:** - 通过 Run Configuration 启动 Felix,启动后可以看到...