- 浏览: 1148966 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
Eclipse为开发OSGI Bundle提供了良好的支持,它不仅提供向导来创建OSGi Bundle,而且还提供了内嵌的OSGi框架实现(即Equinox容器),可以使用该容器执行和调试Bundle。从本质上说,每一个Eclipse 插件都是一个OSGi Bundle,只不过这个OSGi Bundle增加了一些Eclipse专用的代码而已。下面通过具体的例子来介绍如何用Eclipse来开发OSGi Bundle。
一、新建Bundle
1、在Eclipse的新建向导中选择“Plug-in Project”并点击“Next”按钮,你将看到插件项目对话框。
2、在对话框中输入输入以下值:
Project name(项目名称):EclipseHello
Target Platform(目标平台):an OSGiFramework->Standard (OSGi框架->标准)
3、其它的输入可以采用缺省值,点击“Next”按钮,你将看到插件上下文对话框。
4、在对话框中保持缺省值,点击“Next”按钮,你将看到模板对话框。
5、在模板对话框中选择“Hello OSGi Bundle”模板,点击“Finish”按钮完成该项目。
6、在该插件项目中,生成两个关键的文件:
1)Activator.java:激活器类,如果需要在Bundle启动或关闭时通知自身,可以新建一个实现BundleActivator接口的类,
该类需要遵循以下规则:该类必须有一个public的、不带参数的构造函数,这样,OSGi框架就能调用该类的Class.newInstance()方
法创建这个BundleActivator对象。
启动一个Bundle,容器将调用Activator类的start()方法,我们可以在start()方法中执行一些资源初始化的操作,start()
方法的唯一参数是一个BundleContext对象,Bundles可以通过该对象和 OSGi框架通讯。
关闭一个Bundle,容器将调用Activator类中的stop()方法,我们可以在stop()方法中执行一些资源清理任务。
文件源码如下:
- public class Activator implements BundleActivator {
- public void start(BundleContext context) throws Exception {
- System.out.println("Hello World!!" );
- }
- public void stop(BundleContext context) throws Exception {
- System.out.println("Goodbye World!!" );
- }
- }
2)MANIFEST.MF:Bundle的部署描述文件,其格式和正常JAR文件包中的MANIFEST.MF文件相同,因此它由一系列的属性及这些属性对应的值组成。OSGi规范规定,您可以使用属性头向容器描述您的Bundle。
文件内容如下:
- Manifest-Version: 1.0
- Bundle-ManifestVersion: 2
- Bundle-Name: EclipseHello Plug-in
- Bundle-SymbolicName: EclipseHello
- Bundle-Version: 1.0 . 0
- Bundle-Activator: eclipsehello.Activator
- Bundle-ClassPath: bin/
- Bundle-Vendor: cjm
- Import-Package: org.osgi.framework;version="1.3.0"
Bundle-ManifestVersion:该属性告诉OSGi容器,本Bundle将遵循OSGi规范,数值2表示本Bundle和OSGi规范第
4版本兼容;如果该属性的数值为1,则表示本Bundle和OSGi版本3或更早版本兼容。
Bundle-Name:该属性为本Bundle定义了一个简短的、可以阅读的名称。
Bundle-SymbolicName:该属性为本Bundle定义了一个唯一的、非本地化的名字,当您需要从别的Bundles中访问某一指定的Bundle时,您就要使用这个名字。
Bundle-Version:该属性给出了本Bundle的版本号。
Bundle-Activator:该属性给出了本Bundle中使用的激活器类名字,这个属性值是可选的。激活器将对Activator中的start()和stop()方法进行监听。
Bundle-ClassPath:该属性定义了该Bundle的运行时类路径。
Bundle-Vendor:该属性是对本Bundle发行商的描述。
Import-Package:该属性定义了本Bundle中引入的Java包。
二、运行Bundle
Eclipse IDE中有一个内嵌的Equinox OSGi容器,您可以利用它来执行或调试OSGi Bundle。以下是运行Bundle的步骤:
1、打开运行时配置对话框,添加一个“OSGi Framework”类型的配置。
2、点击“Deselect All”按钮,确保Bundles列表没有任何的Bundle被选中。
3、在Workspace插件目录下有一个名为EclipseHello的插件,选中它;在Target Platform插件目录下,请确保org.eclipse.osgi插件被选中。
4、点击“Run”按钮,在控制台视图中应该会打印出“Hello World!!”。其实,Eclipse是在控制台视图中打开OSGi控制台的。
5、在控制台中输入ss命令,查看OSGi容器中包含的Bundle及其状态等信息。控制台显示以下信息:
osgi> Hello World!!
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.3.0.v20070530
1 ACTIVE EclipseHello_1.0.0
osgi>
三、将插件导出为jar文件(一个jar文件就是一个Bundle )
1、选择“File > Export” 菜单,打开导出对话框。
2、在导出对话框中,选择“Plug-in Development > Deployable plug-ins and fragments”项,并点击“Next”按钮。
3、在可用插件列表中选中“EclipseHello”插件,选择jar文件的保存路径,点击“Finish”按钮完成导出。
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1567OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20324.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2492摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1423随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1411随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1634OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12491、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1058不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1227registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1362在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1306osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1165软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3539将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11551、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1421Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13321、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1207一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1159当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1559OSGi Core定义了一个服务层,提供了一个Bundl ... -
OSGI 中嵌入 Http 服务器的运行环境
2012-07-31 13:44 3054Eclipse 4.2 OSGI 依赖的Bundle: or ...
相关推荐
2. **PDE工具**:Eclipse中的Plug-in Development Environment(PDE)支持OSGi Bundle的开发,包括创建、编辑和调试Bundle。 3. **Manifest文件**:每个Bundle有一个MANIFEST.MF文件,定义了Bundle的基本信息,如...
8. `org.springframework.osgi.io`:这个模块提供了OSGI环境下的资源读取和加载功能,如读取bundle中的配置文件。 9. `org.springframework.osgi.core`:这是Spring OSGI的核心模块,包含了一些基础的OSGI服务和...
在"OSGI.rar_OSGI eclipse_eclipse osgi_java OSGI_osgi"这个压缩包中,我们可以找到"OSGI实战.pdf",这很可能是关于如何在Eclipse环境下使用OSGI进行实际开发的详细指南。该书可能会涵盖以下关键知识点: 1. **...
**基于Eclipse开发OSGI的简单实例** OSGi(Open Services Gateway Initiative)是一种...阅读`OSGI.doc`、`純OSGI方式`和`SPringDM方式源碼`中的文档和代码,将有助于更深入理解和掌握OSGi在Eclipse环境下的开发技术。
通过这个例子,学习者可以了解OSGi Bundle的结构,如何在EQUINOX上部署和管理它们,以及如何使用Eclipse作为开发工具来创建和调试OSGi应用。这涉及到理解Bundle的生命周期、MANIFEST.MF文件的编写、Eclipse插件的...
例如,`org.eclipse.osgi.framework.internal.core.BundleHost`类负责管理bundle的启动和停止,`org.eclipse.osgi.framework.eventmgr.EventAdmin`则展示了OSGi事件模型的实现。 五、应用场景 OSGi在许多领域有着...
通过学习这些资源,你可以了解到如何创建、配置和管理OSGI Bundle,如何在Eclipse中开发和调试OSGI插件,以及如何利用OSGI的动态性来优化大型Java项目。理解并掌握OSGI将有助于提升你的Java开发技能,尤其是在构建...
9. **开发工具支持**:Eclipse IDE 自然对 OSGi 提供了良好的支持,有专门的工具帮助开发者创建、管理和调试 OSGi bundle。 通过 "org.eclipse.osgi-3.8.0.v20120529-1548.jar" 这个 JAR 文件,开发者可以集成这个...
随着技术的不断进步,OSGi将在企业级应用开发中扮演越来越重要的角色,特别是在那些需要频繁更新和扩展的服务场景中。Eclipse公司对OSGi技术的关注表明了这一趋势,并且随着Swordfish等项目的不断发展,我们可以期待...
标题中的“在Eclipse RCP中应用Spring OSGI 管理bean(一)”表明这是一篇关于如何在Eclipse Rich Client Platform (RCP)应用程序中集成Spring框架,并利用OSGi服务来管理Bean的教程。Eclipse RCP是一个用于构建桌面...
在“org.eclipse.osgi-3.7.2”中,主要包含实现OSGi运行时环境所需的类库和服务,如启动、管理bundle的生命周期、处理bundle间的依赖关系等。 在Eclipse OSGi框架下,每个bundle都有自己的类加载器,这使得bundle...
Eclipse OSGi在Eclipse IDE中的应用体现在插件系统上,每个Eclipse插件本质上就是一个OSGi Bundle,它们可以独立开发、部署,并根据需要启动或关闭,极大地增强了Eclipse的可扩展性和可维护性。 总之,"org.eclipse...
为了在Eclipse中开发OSGi Web应用,需要安装相应的插件,如Gemini Web的支持,以便创建和管理WAB项目。 **2.4 设置目标平台** 目标平台是开发和运行OSGi应用的基础,需要包含必要的OSGi框架(如Equinox)、Gemini ...
在这些工作中,插件开发人员需与Eclipse模型层进行交互,通过操作模型来反映用户界面的变化。 此外,Eclipse插件开发还需要熟悉Eclipse服务层(Service Layer)和命令框架(Command Framework)。服务层是Eclipse...
在Eclipse-OSGi框架中,基本的概念单元是Bundle。Bundle是封装了一组相关的功能和资源的Java包,它能够与其他Bundle合作来提供系统服务。每个Bundle都有一个唯一的标识(一个长整型的ID),并且拥有自己的生命周期...
本篇文章将深入探讨如何使用Eclipse与Maven一起打包bundle,这在Java OSGi(Open Services Gateway Initiative)开发中尤为常见。 首先,我们需要了解OSGi,它是一种模块化系统,用于Java应用程序,允许动态发现和...
3. **创建OSGi Bundle**:在Eclipse中,创建一个新的Plug-in Project,通过配置MANIFEST.MF文件声明Bundle的元数据,包括 Bundle-SymbolicName、Bundle-Version等。同时,编写Bundle的入口类,实现BundleActivator...
1. 创建OSGi Bundle项目:在Eclipse中,选择"File" -> "New" -> "Other",在弹出的窗口中,展开"Plug-in Development",选择"OSGi Bundle Project",点击"Next"。为项目命名,然后点击"Finish"。 2. 编写Bundle:在...
在Java开发领域,OSGi允许多个组件(称为Bundle)在同一虚拟机中独立运行,并且可以动态地安装、启动、更新和卸载,从而实现了组件化管理和服务化编程。 Eclipse作为一个流行的Java集成开发环境(IDE),其内核便是...