`
sswh
  • 浏览: 163715 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

关于Felix框架中的服务监听分发存在性能问题。

    博客分类:
  • OSGi
 
阅读更多


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);



 







 

  • 大小: 13 KB
0
0
分享到:
评论

相关推荐

    Apache Felix 框架整理包 开箱即用

    在描述中提到的“框架运行环境”是指 Apache Felix 为运行 OSGi 应用程序提供的基础环境,包括启动器、类加载器、服务注册表等核心组件。这些组件共同确保了 OSGi bundle 之间的隔离性和协作性,使得不同 bundle ...

    Felix华为Felix开发和运行包。

    【标签】:“Felix”作为标签,意味着主要关注点在于Felix框架本身及其在华为环境中的应用。Felix框架的核心特性包括服务注册与发现、动态模块加载、依赖注入等,这些都是OSGi规范的重要组成部分。开发者可以利用...

    felix软件包

    felix软件包是Apache Felix项目的一部分,它是一个开源的实现,完全符合OSGi(开放服务网关倡议)规范的框架。OSGI是一种模块化系统,主要用于Java应用程序,它提供了动态模块发现、加载和管理的能力,使得开发人员...

    Felix 2.0.4

    **Felix 2.0.4:OSGi实践中的关键框架** Apache Felix是Apache软件基金会开发的一款开源OSGi实现,它遵循OSGi规范并提供了一种灵活、模块化的Java应用程序开发方式。OSGi(Open Services Gateway Initiative)是一...

    Felix 小例子

    标题中的"Felix小例子"指的是一个使用Felix框架的示例项目。Felix是Apache软件基金会的一个开源项目,它是实现OSGi(开放服务网关规范)标准的Java框架。OSGi是一种模块化系统,用于管理和运行Java应用程序,使得...

    Eclipse中搭建Felix运行环境

    在IT行业中,OSGI(Open Services Gateway Initiative)是一种模块化系统和Java应用程序框架,它...在实际开发中,你可能还需要学习更多关于OSGI服务、生命周期管理和配置管理的知识,以便更好地利用这个强大的框架。

    felix-framework-6.0.1.rar

    文档目录,提供关于Felix框架6.0.1版的API参考、用户指南、开发者文档等。这些资料对学习和理解如何使用和扩展Felix框架至关重要。 **OSGi核心概念:** 1. **Bundle**:OSGi的核心组件,类似于Java的JAR文件,但...

    felix 可以用jar包

    2. **动态性**:在Felix中,jar包可以被动态地安装、启动、更新和卸载,而无需重启整个系统。这种灵活性使开发者能够实现热部署和热更新,提高系统的响应速度和稳定性。 3. **依赖管理**:Felix的OSGi框架提供了一...

    org.apache.felix.main.distribution-4.2.1.zip

    在"org.apache.felix.main.distribution-4.2.1.zip"这个压缩包中,主要包含的是 Apache Felix 框架的核心组件,特别是 "felix-framework-4.2.1" 文件,这是 Felix OSGi 框架的实现。下面将详细介绍这个压缩包中的...

    felix-framework-5.6.8

    标题中的"felix-framework-5.6.8"指的是该框架的5.6.8版本,这通常是发布的一个稳定版本,包含了错误修复、性能优化和可能的新功能。 在描述中提到"想找个felix插件版的,可惜404",这意味着用户可能在寻找与Felix ...

    org.apache.felix.framework:Apache Felix OSGi框架

    2. **依赖管理**:Apache Felix支持声明性服务,允许bundle声明它们需要的其他服务及其版本,框架会自动解决依赖关系。这使得组件间的依赖关系清晰,便于理解和维护。 3. **服务注册与发现**:OSGi框架提供了一个...

    org.apache.felix.main-6.0.3.rar

    - **启动流程**:通过分析`src`中的代码,我们可以了解Felix如何初始化、加载配置、处理bundle生命周期和启动服务。 - **事件处理**:查看事件监听器和回调函数,理解bundle如何响应框架事件。 - **服务注册和查找**...

    apache-felix-demo

    在 "apache-felix-demo" 中,“order”可能是演示中的一个模块或服务,可能包含了处理订单相关的业务逻辑、数据模型和服务接口。这个子目录可能包含 Java 源代码、配置文件和打包好的 bundle。 8. **部署与调试**...

    利用felix和struts2实现osgi web

    - 结构原理:Web容器注册Struts OSGi监听器,监听器控制Apache Felix Host,Felix Host启动和管理Felix Framework,而Struts OSGi Plugin监听bundle的变化,当检测到Struts bundle时,加载相应的Struts配置。...

    Felix-2.0.2-src

    通过研究这些组件,开发者可以了解到如何创建和管理OSGi bundle,以及如何在Felix框架中实现服务的发布和消费。此外,源代码还包含了丰富的示例和测试用例,可以帮助理解如何在实际应用中使用Felix。 总之,Felix ...

    ApacheFelix框架

    3. **动态性**:Apache Felix允许模块和服务在运行时动态地安装、启动、更新和卸载,这在传统Java应用程序中是难以实现的。 4. **配置管理**:Felix提供了一种机制来管理和更改组件的配置,使得应用程序可以在运行...

    felix整合spring

    4. **使用Felix SCR**:Apache Felix Service Component Runtime (SCR)是OSGi服务组件的实现,它允许你在OSGi环境中声明和管理组件。在Spring Bean上使用@Component和@Service等注解,声明它们为OSGi服务。 5. **...

    org.apache.felix.main.distribution-3.2.2.tar.gz

    这个文件包含了Apache Felix框架的所有组件和必要的依赖,方便用户在自己的环境中部署和使用。 Apache Felix是Apache软件基金会的一个开源项目,它是OSGi(Open Services Gateway Initiative)规范的实现。OSGi是一...

    osgi felix plug in

    - **插件机制**:Felix Plugin是指在Felix环境中运行的特定功能扩展,例如,提供新的服务、管理其他bundle等。 3. **Felix Plugin的应用**: - **服务注册与查找**:插件可以注册服务到OSGi服务注册表,其他...

    felix 文档

    - 将 Felix 目录中的内容复制到该 Java 工程中。 - 添加 `felix.jar` 到构建路径中。 - 配置 Run Configuration 来启动 Felix。 4. **启动 Felix:** - 通过 Run Configuration 启动 Felix,启动后可以看到...

Global site tag (gtag.js) - Google Analytics