在osgi bundle中访问osgi container之外的传统服务

      osgi container是java实践中的一个框架,在这个框架中,按照osgi的规范,实现了java中module的思想,从而真正实现了java的模块化开发。

      在模块的互用方面,osgi提供了两种方式:一是通过export/import包实现,二是通过在osgi bundlecontext中注册service,实现各个模块之间的交互。第二种方式符合SOA的标准,是osgi中推荐的交互方式。同样的,osgi container和传统的java 进程交互,也提供了同样的方式,在《在osgi容器外应用osgi bundle提供的服务》一文中,分析了如何在osgi container外部,引用osgi服务的一种方式,同样的在osgi bundle中引用传统java进行的服务,也是通过osgi container的bundleContext实现的。

     下面是实现在osgi bundle中访问一个外部的service的完整的过程。

      一、在osgi container中注册一个外部的服务(这个例子实在Apache的felix container中完成)

      在felix的host对象中,首先实例化一个felix对象,然后,初始化felix,随后在felix container的bundlecontext中注册一个服务

            m_felix = new Felix(config);
            m_felix.init();
            AutoProcessor.process(config, m_felix.getBundleContext());
            m_felix.getBundleContext().registerService(ShareInterface.class.getName(), new ShareImpl(), null);
          // Now start Felix instance.
            m_felix.start();

 

 二、在bundle中引用这个注册的服务

      虽然这个服务已经注册到osgi container的bundlecontext中了,但是在bundle中利用正常的ServiceTracker无法引用到这个服务(可能是由于注册时,不在osgi container中,所以,没有在osgi的整个环境中出现),但是,这个服务在system bundle中是可见的,所以,可以通过访问system bundle的bundlecontext来获得这个外部的服务

		Bundle[] bundles = context.getBundles();

		ServiceTracker st = new ServiceTracker(bundles[0].getBundleContext(),ShareInterface.class.getName(),null);
		st.open();
		Object si =  st.getService();
		Method m = si.getClass().getDeclaredMethod("share", null);
		m.invoke(si, null);

 同样的,由于服务注册时,不在osgi container的环境中,所以服务实例化的classloader和osgi container中的classloader之间不能够直接的访问,利用反射的方法,可以访问到注册的服务,就实现了osgi bundle访问osgi container之外的服务了。

 

 

利用LQR反馈控制器在不同风况下模拟风力涡轮转速控制的MATLAB.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

高校技术转移办公室人员如何提升技术成果的推介效果和市场转化率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

osgi中service的访问方式

osgi中services总是通过serviceReference来访问的,他唯一对应一个service对象 要访问一个服务,以下步骤是必须的: 1。获取serviceReference引用 2。通过BundleContext.getService()获取服务对象实例 而获取ServiceReference的方式有以下几种: 1。直接通过BundleContext.getServic...

jncz 366

两相交错并联BuckBoost变换器仿真模型(Simulink仿真实现)

内容概要:本文档系统整合了电力电子与新能源领域的Simulink仿真资源,聚焦于两相交错并联Buck-Boost变换器的双闭环PWM控制建模与仿真,同时涵盖多种典型拓扑结构,包括交错并联Boost、PFC功率因数校正、LLC谐振变换器、双向CLLC、DAB变换器、VIENNA整流器等。资源体系完整,包含仿真模型、设计报告、计算书、PPT说明文档及Matlab/Python代码,覆盖从基础建模到高级控制策略(如软开关技术、谐波抑制、状态估计、双闭环控制)的全流程。此外,还拓展至状态估计(卡尔曼滤波、粒子滤波)、智能优化算法、机器学习、信号处理、路径规划等多个交叉学科方向,构建了一个面向科研与工程应用的综合性技术平台。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等专业的硕士博士研究生、高校科研人员,以及从事新能源发电、智能电网、电动汽车、电力传动等领域技术研发的工程师。; 使用场景及目标:①开展电力电子变换器(如Buck-Boost、LLC、DAB、PFC等)的建模、控制与仿真研究;②支撑课程设计、学位论文、科研项目中的系统仿真与算法验证;③学习并复现高水平期刊(如EI)提出的先进控制策略,如基于KKT条件的最优控制、扩展移相调制、恒压恒流双环竞争控制等;④结合智能算法(如粒子群、秃鹰算法)进行微电网调度、储能配置、路径规划等多目标优化问题的研究与快速原型开发。; 阅读建议:建议依据提供的资源目录循序渐进地查阅资料,优先选取与自身研究方向高度契合的内容进行深入学习;应结合仿真模型与配套文档动手实践,调试参数并分析结果,充分利用百度网盘与公众号渠道获取完整资源,提升科研工作的系统性、规范性与创新性。

OSGI组件启动异常的错误解决方法

第一种异常:org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to instantiate components Caused by: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntit

myblog_dhy的专栏 1万+

【基于Zernike矩的良性和恶性肿块的分类】应用于乳腺癌诊断中的快速相反权重学习规则(Matlab代码实现)

内容概要:本文详细介绍了基于Plecs软件构建的全桥LLC谐振变换器仿真模型,重点阐述了其在软开关技术条件下的建模方法与仿真分析过程。该模型能够精确模拟LLC谐振变换器在不同运行工况下的动态响应特性,涵盖开环与闭环控制策略的设计与实现,适用于研究变换器的效率优化、谐振参数匹配、系统稳定性及软开关性能等问题。相较于Simulink等传统仿真工具,Plecs在高频电力电子系统仿真中展现出更高的仿真速度与数值精度,尤其适合用于复杂电力电子拓扑的快速原型验证与优化设计。; 适合人群:具备扎实电力电子技术基础和仿真经验,从事高频功率变换器设计、新能源电源开发、电力电子系统研究的研发工程师及高校研究生。; 使用场景及目标:①深入理解全桥LLC谐振变换器的工作原理与软开关实现机制;②掌握在Plecs环境中搭建高精度、高效率电力电子系统仿真模型的方法;③开展变换器控制策略(如变频控制、闭环稳压)的仿真验证与参数优化;④为科研课题、学位论文或工业项目提供可靠的仿真平台与技术支持。; 阅读建议:建议结合相关电力电子教材与LLC变换器设计指南,深入掌握谐振参数计算与系统稳定性分析方法,并通过反复调试仿真模型,观察关键波形(如原边电流零点切换、副边整流波形),以全面理解软开关过程的物理本质与控制实现细节。

用户画像标签维度_搭建电商平台用户画像标签体系

01 整体思路电商平台连接了卖家和买家两端,最终目的都是促进交易,从而追求更高的销售额。提高人货匹配度是促进交易的关键,而提高人货匹配度的关键就是“让买家找到想要的货物”。本文结合“人、货、场”理论模型,尝试建立电商平台的用户画像标签体系。02 三类标签用户在平台购物的整体流程可以概括为:进入平台、选择商品、下单付款。可以将该过程抽象为“人、货、场”。即用户通过什么途径进入什么商品的页面...

weixin_31668621的博客 1642

web container与osgi container集成方案实践

一、目的: 目前Osgi Web开发仅有HttpService,Virgo的可以将WAR应用转换成Bundle,对我而言有些“重”,为了力求简洁,自行尝试使用Web Container来集成Osgi Container,便于定制客户化的管理功能,监控功能。 二、环境准备: 框架: spring3.1 RC1 osgi 3.6.2 gemini-blueprint 1.0 se...

tianshibaijia 228

Vcenter安全加固-防火墙-只允许特定的IP地址访问Vcenter

3、此时除了被允许的IP地址可以访问之外,其余地址均被防火墙阻挡。2、再进行0.0.0.0/0匹配所有其他IP地址进行拒绝访问。1、只需要关注接受和拒绝即可。2、其余选择不是这个场景使用的。1.只允许特定的IP地址访问Vcenter。1、登录Vcenter管理界面。2、点击防火墙-添加。

博然的宝藏库 7280

OSGI的bundle

OSGI的bundle 为什么要引入bundle?我们常常需要把大型系统分解为多个较小的互相协作的逻辑单元,我们希望这些逻辑单元内部之间是互相不可见的,但同时我也要是这些逻辑单元对外提供一些接口供外部调用以协作完成我们的业务。这不就是面向对象吗?类似于封装一个类,同时提供一些外部可以访问的public方法。 但事实上大多数情况下这些逻辑单元是不可能通过一个类就能解决的,可能是多个类一起协...

weixin_30725467的博客 148

AMBA-CHI协议详解(二)

读事务,写事务,原子事务,Stash事务,Dataless事务,DVM事务,Retry事务。

Crazzy_M的博客 6652

2024.12.29 【RNA-seq】Rawdata数据缺失问题与解决方案

Fastq格式是一种用于存储高通量测序数据的文件格式,包含序列和相应的质量信息。第一行以开头,后接序列标识符;第二行是测序的DNA序列;第三行以开头,可能会跟随序列标识符;第四行是对应的质量值,以ASCII字符表示。Rawdata的数据完整性通常情况下是没有问题的,但我们仍然需要对下机数据进行验证,确保后续分析的正常进行,好的分析习惯可以提高整体的分析效率,避免很多不必要的麻烦。

1111

OSGi bundle之间通过反射调用方法

两个bundle之间不通过pom文件引入jar包方式调用另一个方法,通过反射的方式调用。 前提:被调用的方法的bundle需要配置  <Export-Package> 要提供的被引用的包</Export-Package> 调用方需要配置 <Import-Package>引入的包名,多个可通过,隔开</Import-Package> 如此便可以通...

卖辣椒也用券 1063

倍福---EL2262模块飞拍配置

控制器安装了twincat3,用EL2262实现相机飞拍功能。本文档只介绍如何通过EL2262实现飞拍的触发,并不涉及视觉方面的处理 参考文章: https://author.baidu.com/home?from=bjh_article&app_id=1669190598708386 https://mp.weixin.qq.com/s/r4Iq8kOP-o4_M8vCce5M9g 1、 飞拍的应用 在大多数场合,只能当被检测工件和相机都处于静止状态下才能进行拍照,拍照完成后,再移动工件或相机,进

weixin_41883890的博客 3738

传统 Eclipse 插件项目手动转换 JAR 为 OSGi Bundle :No available bundle exports package ‘javax.websocket‘

在Eclipse插件开发中,直接引入普通JAR会导致依赖解析失败(如No available bundle exports package ‘javax.websocket’)。核心原因是OSGi容器需要特殊的Bundle元数据。

lookbbs的专栏 498

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1881

从 SM30 到 Fiori:在 SAP BTP ABAP Environment 里创建 Business Configuration 配置维护对象的完整路径

摘要 在SAP BTP的ABAP环境中,传统SAP GUI和SM30配置方式被Business Configuration (BC)替代。BC通过Fiori应用维护配置,支持传输和权限控制。配置表需满足可维护性条件,如允许数据维护、包含技术字段等。通过ADT生成Maintenance Object和Transport Object,实现配置发布与治理。权限管理需创建IAM App和Business Catalog,确保配置可维护。BC在云端延续了可控、可追溯、可发布的治理原则。 (字数:150)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 242

如何通过DBeaver插件架构解决企业级数据库管理难题

作为数据库管理员,你是否经常面临这样的困境:需要连接多种不同类型的数据库,但每个数据库都有自己专属的管理工具,切换成本高,学习曲线陡峭?或者,当团队需要协作时,每个人都使用不同的工具,导致SQL脚本格式混乱、数据导出格式不统一?DBeaver的插件架构正是为解决这些企业级数据库管理难题而设计的。 DBeaver作为一个免费、开源的通用数据库管理工具,通过其基于OSGi的插件架构,实现了对100多

gitblog_01130的博客 1092

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

工作中使用到的单词(软件开发)_第四版

本文汇总了2020-2025年间软件开发相关的工作笔记,主要包括三版技术词汇整理(2020-2025)、优快云文章导出PDF情况,以及2025年6月的专题整理。重点内容涉及:WebSphere中jackson包加载路径问题、Java异步线程类型(守护/非守护线程)的区分与解决方案、DB2数据库连接相关指令(db2listapplications等)、AWS托管服务优势,以及OSGi框架与Java的关系说明。特别标注了技术术语的英文发音(如initiative)和敏感信息处理注意事项(敏感度标签设置)。后续

sun0322 1344

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDE与AI中转平台协议桥接实战指南

现代AI编程工具链中,IDE并非直接调用大模型,而是严格遵循OpenAI兼容API协议发起HTTP请求。理解这一协议层本质,是解决JetBrains AI Assistant不可用、VS Code插件报错、Trae IDE上下文丢失等高频问题的关键。本文从协议原理出发,解析IDE与中转平台间的真实握手逻辑——包括健康检查端点、X-File-Context头透传、@command指令语义转换、嵌入式芯片知识注入等核心技术价值。适用于Ollama、vLLM、Qwen、DeepSeek等本地及云模型接入场景,覆盖

weixin_34315485的博客 491

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Sidecar模式加速单体应用开发:构建、调试与发布优化实战

Sidecar是一种轻量级、进程外解耦的辅助服务部署模式,源于容器化实践中共享网络命名空间的伴生容器设计,核心原理是将日志采集、配置注入、流量代理等横切关注点从单体应用中剥离,实现物理隔离与独立生命周期管理。其技术价值在于不重构代码、不变更组织结构的前提下,显著提升Dev Speed——尤其在构建耗时、本地环境一致性、灰度发布颗粒度三大痛点上效果突出。典型应用场景包括Java/Spring Boot或.NET Core单体系统的渐进式现代化改造、CI/CD流水线提速、以及向非技术管理者具象化技术债治理收益。

dianyin7770的博客 392

在osgi容器外应用osgi bundle提供的服务

 任何系统都不是孤立存在的,都有一个持续发展的过程,在java技术的应用中,osgi的理念提出,从机制上解决了java中模块化的问题,使得Java真正能够实现模块化的开发。但是,在osgi之前,已经存在了很多的系统和各种不同的框架技术,每一个都有自己的使用范围和优点,osgi一方面不可能覆盖所有以前平台和框架提供的各种功能,另一方面传统的系统也不可能因为osgi的出现,进行完成的重构,因此osgi...

沧海一粟 219

OSGI中的bundle详解

https://www.cnblogs.com/binarylei/p/8537307.html

weixin_42410730的博客 1668

OSGi - 第04章 BundleContext.getService()详解之二

这一节对比一下BundleContext上几个getServiceReference方法的差别: 1、getAllServiceReferences(String clazz, String filter)方法:       这个方法从服务注册表中检索所有以指定服务名称注册的服务,并且按照服务过滤条件进行过滤。       这里需要注意2点:一是服务注册时,可选提供一

sswhsz的专栏 2981

学习过osgi 发布bundle

学习过osgi 发布bundle 先按模块把项目拆分出来分成一个一个的bundle,依赖其他包也是通过bundle.如果bundle与bundle之间有业务关系就采用spring(具体名字有点忘了...) 提供一个服务出来。所有bundle采用virgo服务热部署....最后运行起来。 每个bundle都有自己的页面...比如ext的框架。那我就放common里面 其他的模块只要依赖了,也可...

iteye_14984的博客 140

OSGi bundle之间互相通信的方法

摘要 OSGi的一个标准就是各个bundle之间是相互隔离的,每个bundle都有自己的classloader,并且不同的版本之间都是相互隔离的,这样就使bundle从物理上进行了隔离,那么OSGi 的bundle之间是怎么进行通信的呢? 下面我们将要介绍3中方法。 Bundles之间通信的方法 方法 描述 ...

578
上一篇: Transloader tutorial
下一篇: JDBC+Hibernate将Blob数据写入Oracle
tkxing
博客等级 码龄19年 1粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值