1999年3月,OSGi联盟(非盈利性质)成立,目标 是建立家庭网关,并通过互联网向家庭网络提供各种服务,例如通过web页面控制咖啡机等;
Eclipse V3.0采用OSGi,使得OSGi成功进入Java企业应用领域,并成为其中重要一员;同时Eclipse推出了OSGi R4 RI:Equinox,所以直接使用Eclipse即可开发OSGI框架的程序
OSGI是什么?
Dynamic Module System For Java这是OSGi最开始的定义;
意味着基于OSGi就可以模块化的开发Java应用;
意味着基于OSGi就可以模块化的部署Java应用;
还可以动态的管理模块。
Universal Middleware
这是OSGi近年来新取的名词,目标是让OSGi脱离语言限制,成为所有语言的统一模型。
在OSGi中这不是一个虚拟的概念,而是一个实体:Bundle
Bundle是一个普通的jar,只是其META-INF中的manifest.mf中描述了一些标准的模块的信息。
以下是manifest.mf文件内容示例:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: A
Bundle-SymbolicName: A
Bundle-Version: 1.0.0
Bundle-Activator: a.Activator
Bundle-Vendor: zjm
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Bundle-ActivationPolicy: lazy
模块的交互方式:
以package方式交互:
通过Export-Package对外提供packages;
通过Import-Package使用其他模块的packages;
Package支持版本机制;
以service方式进行交互:
符合面向接口原则;
支持IoC方式注入;
面向服务的组件模型,Single VM下SOA的一种典型实现。
模块的生命周期如图:
osgi下的控制台有很多命令,可通过help命令进行查看用法
安装模块,有两种方式:
1,使用目录模式,install file:/D:\work\workspace\OSGi-Bulletin\FirstBundle,注意目录名中不能有空格
2,使用jar模式,先将bundle导出成可部署的插件,然后在控制台执行install
file:/D:\Opendoc\Equinox\plugins\FirstBundle_1.0.0.jar
示例:第一个OSGI实例
新建eclipse 插件项目,选择osgi平台,将自动生成Activator类,它是启动模块的类
package a;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
//自己写的
System.out.println("osgi bundle started");
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
//自己写的
System.out.println("osgi bundle stopped");
}
}
项目结构图:
运行 在osgi框架上,结果如下:
用ss命令可查看模块
可以停止模块:
- 大小: 3.2 KB
- 大小: 10.9 KB
- 大小: 13.8 KB
- 大小: 15.8 KB
- 大小: 10.7 KB
分享到:
相关推荐
OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化Java应用程序。它提供了一种动态、可热更新的环境,使得开发者可以更灵活地管理软件组件。在深入理解OSGI之前,我们先来了解一些基本概念。...
包含电子书和第04、05、06、07、08、09、10、11、13章的代码, 是学习OSGi和Apache Felix的一个很好的入门资料, 虽然版本有一点点老了, 但是基本的东西没有变, 值得下下来一看!
- **资料来源:** COSCUP2008会议中try的OSGi简介演讲(投影片、影片一、影片二)。 - **学习目标:** 通过观看这些资料,理解OSGi的核心概念和技术框架,特别是服务(Service)的概念。 - **学习成果:** 对OSGi有一...
pro_spring_dynamic_modules_for_osgi_service_platforms, OSGi In Action, Enterprise OSGi in Action, Instant OSGi Starter
在《Spring动态模块参考指南》中,你可能会学习到如何配置OSGi容器以运行Spring应用,如何定义和管理OSGi服务,以及如何在Spring应用中利用OSGi的动态性。此外,指南还会介绍如何处理版本冲突和依赖管理,确保在OSGi...
标题 "ebook download" 暗示我们关注的焦点是一本电子书的下载,而描述中的“博文链接”指向了一篇可能与电子书内容相关的博客文章。虽然描述本身是空的,但我们可以通过标签来推测一些内容。标签“源码”和“工具”...
在提供的"Apache CXF WebService Development"电子书中,读者可以深入学习到如何使用CXF框架开发Web服务,包括基本概念、配置、服务实现、客户端调用、异常处理、安全策略等内容。源码部分则可能包含示例项目,让...
包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行...OSGi组件、测试数据库访问、测试基于JPA的应用程序、JUnit的其他用法等内容...
【压缩包子文件的文件名称列表】"OSGi and Equinox:Creating+Highly+Modular+Java+Systems.pdf"是压缩包内的主要资源,这是一本关于如何使用OSGi和Equinox创建高度模块化Java系统的电子书。OSGi和Equinox是紧密相关...
但是是安装时没有jar包,进行jar包的下载。 org.eclipse.core.runtime_3.1.2.jar org.eclipse.jface_3.1.1.jar org.eclipse.jface.text_3.1.2.jar org.eclipse.osgi_3.1.2.jar org.eclipse.text_3.1.1.jar
Eclipse插件是基于OSGi(Open Service Gateway Initiative)框架构建的,OSGi确保了插件之间的模块化和可交互性。开发Eclipse插件,你需要了解以下几个关键概念: 1. **Plug-in**: 插件是Eclipse的核心构建块,它...
基于Spring IoC容器组件模型的这些新部件涵盖了集成、批处理、OSGi、Ajax和Flex集成、状态式Web应用、REST风格Web服务、富客户端用户界面、Google AppEngine开发、基于云的部署、消息、数据访问和Web服务等多功能性...
2. **itext**:这是一个用于创建和修改PDF文档的Java库,常用于报表生成、电子书制作等场景。 3. **aspectj**:AspectJ是一个强大的面向切面编程(AOP)框架,允许开发者在不修改原有代码的情况下,插入额外的功能...
10. 组件重用:在 Java 中,组件重用是非常重要的,可以通过将组件封装成 JAR 文件或 OSGi.bundle 等方式来重用组件。 此外,Java 组件设计还需要考虑到一些其他因素,例如性能、安全性、可扩展性、可维护性等。...
为了方便读者学习和使用Kotlin,提供了多种格式的离线文档下载,包括PDF、ePUB、Mobi文件,以及GitBook版电子书。通过这些资源,读者可以更容易地在不同环境下进行学习和编程实践。 Kotlin通过其编译器插件支持与...
"爱书吧-2万本图书免费下载.url"可能是一个链接,指向一个资源库,提供了更多关于软件开发和Eclipse技术的电子书,可以帮助扩展学习者的基础知识。 总之,通过学习这些资源,开发者可以深入了解Eclipse插件开发,...