- 浏览: 1129070 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
OSGI StartLevel explained and using 启动级别机制和使用
bundle startlevel
实际的应用环境中,我们的 bundle 互相有一定的依赖关系,所以在启动的顺序上要有所区别,好比盖楼,
要从打地基开始。
实际上,OSGi 框架最初的 start level 是 0,
启动顺序如下:将启动级别加一,如果发现有匹配的 bundle
(即 bundle 的启动级别和目前的启动级别相等),则启动这个 bundle;
继续第一步,直到发现已经启动了所有的 bundle,且活动启动级别和最后的启动的 bundle 启动级别相同。
停止顺序,也是首先将系统的 start level 设置为 0:
由于系统当前活动启动级别大于请求的 start level,所以系统首先停止等于当前活动启动级别的 bundle;
将活动启动级别减一,继续第一步,直到发现活动启动级别和请求级别相等,都是 0。
1静态的设置系统和各Bundle的启动级别,在启动系统时,OSGI框架将按照各Bundle
的启动级别从小到大的启动,如启动级别相同,则按照Bundle ID从小到大的启动,一直启动到系统的启
动级别为止。
configration
config.ini
reference\:file\:bundles/fdsf.jar@4:start //@4:start用于分别设置
osgi.startLevel=
//静态的设置基于OSGI的应用系统的启动级别(不是system bundles(sb) ,sb == 0 forever!),默认
为6
osgi.bundles.defaultStartLevel=
// 静态的设置各个bundles的启动级别,默认为4
要保证“应用系统”的启动级别大于所有需要bundles的启动级别才能使应用系统正常运行!
总之记住:
系统是按照从小到大的level启动的,如果是相等的level,根据id从小到大启动就ok了!
2动态的设置start level
动态的设置系统和各Bundle的启动级别
动态的设置系统和各Bundle的启动级别可通过在运行时调用StartLevelService来实现。
同样的,既然要使用StartLevelService,先打开MANIFEST.MF,在import packages中
import org.osgi.service.startlevel,
通过BundleContext获取StartLevelService:
ServiceReference serviceRef=bc.getServiceReference(StartLevel.class.getName());
StartLevel startLevelSrv=(StartLevel) bc.getService(serviceRef);
StartLevel提供了管理系统和各Bundle启动级别的API:
?? getBundleStartLevel(Bundle bundle)
获取Bundle的启动级别。
?? getInitialBundleStartLevel()
获取默认的Bundle的启动级别。
?? getStartLevel()
获取系统的启动级别。
?? setBundleStartLevel(Bundle bundle,int startLevel)
设置Bundle的启动级别,如设置的启动级别高于系统的启动级别,那么OSGI框架将会停止此Bundle,如设
置的启动级别低于系统的启动级别,如此时Bundle尚未启动,OSGI框架则会启动此Bundle,如已启动,
OSGI框架不会做任何动作。
?? setInitialBundleStartLevel(int startLevel)
设置Bundle的默认启动级别,对于新安装的Bundle将使用此默认启动级别。
?? setStartLevel(int startLevel)
设置系统的启动级别。
如设置的系统启动级别和目前系统的启动级别一致,则OSGI框架会发布 FrameworkEvent.STARTLEVEL_CHANGED的事件;
如设置的系统启动级别比目前的系统启动级别低,那么OSGI框架将现有的启动级别按1递减,
并停止相应启动级别的Bundle,直至设置的系统启动级别,当系统的启动级别和设置的启动
级别一致时,OSGI框架会发布FrameworkEvent.STARTLEVEL_CHANGED的事件;
如设置的系统启动级别比目前的系统启动级别高,那么OSGI框架将现有的启动级别按1递增,
并启动相应启动级别的Bundle,直至设置的系统启动级别,当系统的启动级别和设置的启动
级别一致时,OSGI框架会发布FrameworkEvent.STARTLEVEL_CHANGED的事件。
这些的应用很多哦,典型的就是系统启动前的闪屏,你可以将它的启动级别设置到“最低”!
bundle startlevel
实际的应用环境中,我们的 bundle 互相有一定的依赖关系,所以在启动的顺序上要有所区别,好比盖楼,
要从打地基开始。
实际上,OSGi 框架最初的 start level 是 0,
启动顺序如下:将启动级别加一,如果发现有匹配的 bundle
(即 bundle 的启动级别和目前的启动级别相等),则启动这个 bundle;
继续第一步,直到发现已经启动了所有的 bundle,且活动启动级别和最后的启动的 bundle 启动级别相同。
停止顺序,也是首先将系统的 start level 设置为 0:
由于系统当前活动启动级别大于请求的 start level,所以系统首先停止等于当前活动启动级别的 bundle;
将活动启动级别减一,继续第一步,直到发现活动启动级别和请求级别相等,都是 0。
1静态的设置系统和各Bundle的启动级别,在启动系统时,OSGI框架将按照各Bundle
的启动级别从小到大的启动,如启动级别相同,则按照Bundle ID从小到大的启动,一直启动到系统的启
动级别为止。
configration
config.ini
reference\:file\:bundles/fdsf.jar@4:start //@4:start用于分别设置
osgi.startLevel=
//静态的设置基于OSGI的应用系统的启动级别(不是system bundles(sb) ,sb == 0 forever!),默认
为6
osgi.bundles.defaultStartLevel=
// 静态的设置各个bundles的启动级别,默认为4
要保证“应用系统”的启动级别大于所有需要bundles的启动级别才能使应用系统正常运行!
总之记住:
系统是按照从小到大的level启动的,如果是相等的level,根据id从小到大启动就ok了!
2动态的设置start level
动态的设置系统和各Bundle的启动级别
动态的设置系统和各Bundle的启动级别可通过在运行时调用StartLevelService来实现。
同样的,既然要使用StartLevelService,先打开MANIFEST.MF,在import packages中
import org.osgi.service.startlevel,
通过BundleContext获取StartLevelService:
ServiceReference serviceRef=bc.getServiceReference(StartLevel.class.getName());
StartLevel startLevelSrv=(StartLevel) bc.getService(serviceRef);
StartLevel提供了管理系统和各Bundle启动级别的API:
?? getBundleStartLevel(Bundle bundle)
获取Bundle的启动级别。
?? getInitialBundleStartLevel()
获取默认的Bundle的启动级别。
?? getStartLevel()
获取系统的启动级别。
?? setBundleStartLevel(Bundle bundle,int startLevel)
设置Bundle的启动级别,如设置的启动级别高于系统的启动级别,那么OSGI框架将会停止此Bundle,如设
置的启动级别低于系统的启动级别,如此时Bundle尚未启动,OSGI框架则会启动此Bundle,如已启动,
OSGI框架不会做任何动作。
?? setInitialBundleStartLevel(int startLevel)
设置Bundle的默认启动级别,对于新安装的Bundle将使用此默认启动级别。
?? setStartLevel(int startLevel)
设置系统的启动级别。
如设置的系统启动级别和目前系统的启动级别一致,则OSGI框架会发布 FrameworkEvent.STARTLEVEL_CHANGED的事件;
如设置的系统启动级别比目前的系统启动级别低,那么OSGI框架将现有的启动级别按1递减,
并停止相应启动级别的Bundle,直至设置的系统启动级别,当系统的启动级别和设置的启动
级别一致时,OSGI框架会发布FrameworkEvent.STARTLEVEL_CHANGED的事件;
如设置的系统启动级别比目前的系统启动级别高,那么OSGI框架将现有的启动级别按1递增,
并启动相应启动级别的Bundle,直至设置的系统启动级别,当系统的启动级别和设置的启动
级别一致时,OSGI框架会发布FrameworkEvent.STARTLEVEL_CHANGED的事件。
这些的应用很多哦,典型的就是系统启动前的闪屏,你可以将它的启动级别设置到“最低”!
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1524OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20024.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2387摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1389随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1376随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1586OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12231、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1027不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1202registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1333在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1273osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1127软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3502将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1303Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11141、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1378Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13061、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1188一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1134当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1516OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
探索 OSGi 框架的组件运行机制探索 OSGi 框架的组件运行机制
OSGi and Equinox, Creating Highly Modular Java Systems
Build your very own OSGi applications using the flexible and powerful Felix Framework
osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍
OSGi and Apache Felix 3.0 Beginner's Guide 英文版和代码
阅读本书,首先你很快就会使用Eclipse bundle工具创建第一个基于OSGi的系统,进而转向复杂的产品开发。接下来,你将掌握一些用于创建具有特殊模块化、高效性和可维护性系统的最佳实践和技巧。你将了解所有的OSGi声明...
Learn what can be done with OSGi and what it can bring to your development structure. Build your first application and deploy to an OSGi runtime that simplifies your experience. Discover an ...
Build a completely operational real-life application composed of multiple bundles and a web front end using Felix. Get yourself acquainted with the OSGi concepts, in an easy-to-follow progressive ...
osgi bridge and spring dm最新jar包
6.4. 开发、发布和使用Service...........29 6.5. 测试和调试...33 6.6. 发布基于OSGI的系统.....34 6.7. Equinox基于OSGI的扩展...........37 6.8. 现有类型系统基于OSGI的开发..38 6.8.1. B/S.....38 6.8.2. C/S.....
osgi,林昊写的osgi实战和进阶,学习osgi的好东西,入门的首选。
Java应用架构设计:模块化模式与OSGi 英文版 中文版介绍: 全球资深Java技术专家的力作,系统、全面地讲解如何将模块化设计思想引入开发中,涵盖18个有助于实现模块化软件架构的模式 中文目录: 第一部分 模块化...
Maven is a new project management and comprehension tool which provides an elegant way to share build logic across projects. In terms of capabilities, Maven is an improvement to Apache Ant-thanks to ...
《OSGi and Apache Felix 3.0 Beginner's Guide》此书中例子的源代码,已使用过,是可以跑的
OSGI入门和整合Spring OSGI入门和整合Spring
本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...
《 OSGi实战》是学习OSGi的全面指导,利用与架构和开发人员相关的示例清楚地讲解OSGi概念,同时探讨了很多实践场景和技术,阐述了开发人员有多需要OSGi,怎么将OSGi嵌入其他容器中,将遗留系统移入OSGi的最佳实践,...
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...