osgi框架是什么(如何解决原系统中嵌入osgi框架时的包冲突问题)
本文目录
- 如何解决原系统中嵌入osgi框架时的包冲突问题
- 如何把osgi工程改造为普通java工程
- 部署在osgi框架中的bundle如何让它在启动的时候不启动,而是通过我的程序控制它启动
- osgi bundle是线程吗
- 使用osgi框架,修改java文件后为什么不好使
如何解决原系统中嵌入osgi框架时的包冲突问题
选了felix的osgi容器并在原系统启动时配置并调用了framework的start。既在原系统中嵌入了osgi。这时若原系统中存在log4j包,且在系统启动后导入新的bundle中也有log4j包时会爆如下错误信息:log4j:ERROR A "org.apache.log4j.xml.DOMConfigurator" object is not assignable to a "org.apache.log4j.spi.Configurator" variable.log4j:ERROR The class "org.apache.log4j.spi.Configurator" was loaded bylog4j:ERROR whereas object of typelog4j:ERROR "org.apache.log4j.xml.DOMConfigurator" was loaded by .log4j:ERROR Could not instantiate configurator .log4j:WARN No appenders could be found for logger (testosgi2.Activator).log4j:WARN Please initialize the log4j system properly.感觉出错的原因是因为加载的classloader不同造成的冲突,org.apache.log4j.spi.Configurator是由org.apache.felix.framework.BundleWiringImpl加载的,而org.apache.log4j.xml.DOMConfigurator是由sun.misc.Launcher$AppClassLoader(原系统)加载的。最后两个WARN则表示找不到配置文件,(原系统能打印日志,bundle中却不能)。
如何把osgi工程改造为普通java工程
如何把osgi工程改造为普通java工程1) 在Eclipse中,点击“File-》New-》Project”菜单,您将会看到新项目创建对话框;2) 在新项目对话框中,选择“Plug-inProject(插件项目)”并点击“Next(下一步)”按钮,您将看到插件项目对话框;3) 在插件项目对话框中,请键入下列值:Project Name(项目名称):com.javaworld.sample.HelloWorldTarget Platform(目标平台):an OSGiFramework-》Standard (OSGi框架-》标准)4) 对其它的要求输入值采用缺省值,并点击“Next(下一步)”按钮,您将会看到插件上下文对话框;5) 在插件上下文对话框中,请选择缺省值并点击“Next(下一步)”按钮;6) 在模板对话框中,请选择“Hello OSGiBundle(你好,OSGi包)”模板,然后点击“Finish(完成)”按钮完成该项目。
部署在osgi框架中的bundle如何让它在启动的时候不启动,而是通过我的程序控制它启动
可以在config.ini中设置要加载的bundle时不要为那两个bundle增加:start,不让其自动启动,在第三个bundle的Activator.start中获取到这两个要启动的bundle,然后执行bundle.start方法进行启动。要注意osgi会缓存上次运行中bundle的状态,在下次启动时自动恢复,所以最好在启动前有清理缓存的操作,或者在第三个bundle的Activator.start中检测先那两个bundle的状态,如果已经是start了就先stop。
osgi bundle是线程吗
前言:我相信做基于OSGI框架开发的朋友,对于OSGI的基本单元Bundle应该并不陌生,平时的开发中,做得最多事情就是bundle的开发和打包了,打包其实属于蛮重要的一个过程,为什么说他重要呢,其实打包的过程就是一个理清bundle依赖关系的过程,在对OSGI的学习和使用过程中,个人觉得最令人头痛的就是bundle之间的依赖关系,而且我到现在为止还没有找到一种比较好的工具能够很好的管理OSGI环境中的各个bundle的依赖关系。不过现在公司也有开始考虑做一些类似phpadmin,mysqladmin这样的基于web的管理工具来对bundle进行统一管理,在这之前,如何解决依赖关系,如何将bundle正确的打包出来并进行部署成了OSGI开发中的一个主要问题,而这篇文章中,我主要介绍目前我自己用过得几种打包方式,总结下经验,如果大家有更好的方法或者有不清楚的地方也可以提出来一起讨论~ 第一种方法就是直接通过eclipse提供的export功能,来直接导出一个一个插件工程,这个过程,相信大家已经用的很熟悉了,直接eclipse给你的提示一步步来就可以了。 这里我只想稍微提几个注意的问题,首先是在打包的时候注意把必要的资源文件给勾选上,像我有时就忘记勾选上一些OSGI service的配置文件,而导致service不能发布或者获取。其次,检查好你的项目自描述文件MANIFAST.MF里面的OSGI相关的配置信息是否都已经写正确,该export和该import的包是否写对,个人觉得OSGI最让人头疼的就是解决bundle之间的依赖关系,有时候OSGI环境一大,依赖关系变得复杂,导出包,引用包常常会容易混淆,所以对OSGI环境中的组件的依赖进行统一管理和限定,可以使bundle的依赖更加清晰,环境也易于管理,降低OSGI开发复杂度。最后,有时候在导出包的时候会碰到一些问题,比如bundle之间循环调用,多半还是由于Bundle之间的依赖发生了冲突的关系,检查一下是否多个bundle是否导出了相同包,bundle的引入包是否正确等等。
使用osgi框架,修改java文件后为什么不好使
使用osgi框架,修改java文件后为什么不好使1、当然是先看Bundle名称了解这个插件的主要作用2、看元文件文件MANIFEST.MF查看该bundle的引用和暴露的接口3、查看有没有集成其他框架 如:springDM applicationContext.xml4、查看Activator.java 找到入口 逐步分析
更多文章:
hyperx(HyperX新推出的QuadCast麦克风,有着怎样的特点)
2024年7月23日 11:38
sqlserver2005服务无法启动(sqlserver2005服务无法启动,有没有高手遇到过)
2024年7月19日 00:39
contained是什么意思(为什么要把pressed改成contained)
2024年5月20日 21:50
draft wind(wind 作动词,蜿蜒,英式音标、怎么写请问)
2024年5月21日 06:18
constantly读音(constantly可以放最后吗)
2024年8月23日 13:30
powerpoint中下列关于表格的说法错误的是(几道Excel,PPT题目请教各位高手!)
2024年5月22日 09:29
js fetch用法(js fetch函数怎么鎐ookie,并且下次请求时带 cookie 访问)
2024年7月20日 22:23
drop table可以恢复吗(drop table可以还原吗)
2024年9月8日 02:35
怎么用navicat创建数据库(如何通过navicat创建数据库和导入数据库)
2024年7月30日 17:50
constraint在数据库什么意思(数据库中的“约束”是什么意思)
2024年3月25日 03:20