惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cloudbric
Cloudbric
V
Visual Studio Blog
L
LangChain Blog
A
About on SuperTechFans
B
Blog
T
Tenable Blog
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Palo Alto Networks Blog
U
Unit 42
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
C
Check Point Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
S
Securelist
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Latest news
Latest news
GbyAI
GbyAI
T
Troy Hunt's Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V2EX - 技术
V2EX - 技术
小众软件
小众软件
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed

博客园 - herobeast

hadoop 2.7.1 高可用安装部署 Redis篇 MySql篇 Tomcat篇 JDK篇 web一次下载多个附件 Implementing a Custom Security Manager(翻译) 腾达路由器设置 正则表达式 jQuery Resizable笔记 OSGi规范 OSGi bundle之间互相通信的方法 Apache CXF 分布式OSGi部署HelloWorld 五米测试 Spring.DM web 开发环境搭建 Spring.DM版HelloWorld 腾讯资深产品经理谈敏捷开发于游戏 js矢量图类库:Raphaël—JavaScript Library 关于生成id的问题
OSGi bundle 与 fragment
herobeast · 2012-04-25 · via 博客园 - herobeast

摘要

在OSGi开发过程中有bundle,翻译成包、束、模块等,fragment,翻译成中文为片断,碎片。以下称为片断。Osgi中的片断,可以理解成附属于某个bundle(包),属于该bundle的一个部分。可以覆盖被附属bundle的配置,即对附属bundle的扩展。以下我们将介绍fragment的使用,使大家能更好的理解fragment这一概念。

创建fragment

先创建一个bundle

image

image

目前MANIFEST.MF内容如下:

image

配置运行项如下图:

image

查询状态如下图:

image

image

image

image

image

image

fragment 是不能够自己启动或停止的,host bundle可以有自己的配置,fragment也可以由自己的配置,可以用fragment的配置来覆盖host bundle的配置。

下面我们就来试验一下

首先在MainBundle的META-INF下建一个default-config.properties文件,如下图所示

image

现在我们在读取这个属性如下图所示

image

我们现在启动bundle,运行Run-configurations看看结果

image

结果如下:

image

好,我们现在在fragment里面也写个属性文件,在MainFragement的META-INF下建一个my-config.properties文件,如下图所示

image

我们修改一下代码:

image

我们再运行一下查看结果

image

结果如下:

image

打印的是fragment的配置,表明主bundle读取的是fragment中的META-INF/my-config.properties配置文件。
这样做有什么优势呢?可以让fragment中的配置覆盖主bundle的配置,而不需要去改变主bundle的配置,直接为主bundle提供一个fragment即可。主bundle是唯一的,就好比定义了一个接口,有很多不同的实现。就像override一样。

如果是多个fragment会是怎么样呢?答案是先加载那个,就读那个的配置,请看下图

image

image

显示的结果如下:

image

和我们预测的一样

fragment不能启动,当然也不能设置启动级别了,必须选择一个bundle host才能启动,可以做一些bundle的依赖类,来扩展host bundle的功能。

源码下载:下载