`
hz_chenwenbiao
  • 浏览: 1007779 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring与OSGi的整合(一)(转)

    博客分类:
  • OSGI
阅读更多

1. 开发环境的准备

现在的eclipse都已经包含了Equinox,无需单独下载。
下载最新版的Spring DM,Spring官方网站:www.SpringSource.org
2. 开发OSGi的HelloWorld应用程序

在这一节,我们将开发一个OSGi bundle,演示如何利用Equinox进行OSGi bundle的开发、运行及调试,为之后的示例做准备。
首先,新建一个Plug-in工程,如下图所示:
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下一步,注意选择目标平台,默认为Eclipse version *,将其改成Equinox,如下图所示:

之后按默认下一步即可,到最后一步时,无需根据模板创建工程,去掉默认的勾,如下图:

点击完成,创建的工程目录如下图所示:

 

从图中,可以看到,eclipse为工程自动生成了一个Activator类,如下所示:

Java代码 复制代码
  1. package helloworld;   
  2.   
  3. import org.osgi.framework.BundleActivator;   
  4. import org.osgi.framework.BundleContext;   
  5.   
  6. public class Activator implements BundleActivator {   
  7.   
  8.     /*  
  9.      * (non-Javadoc)  
  10.      * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)  
  11.      */  
  12.     public void start(BundleContext context) throws Exception {   
  13.         System.out.println("Hello World!");   
  14.     }   
  15.   
  16.     /*  
  17.      * (non-Javadoc)  
  18.      * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)  
  19.      */  
  20.     public void stop(BundleContext context) throws Exception {   
  21.     }   
  22.   
  23. }  
package helloworld;

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("Hello World!");
	}

	/*
	 * (non-Javadoc)
	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext context) throws Exception {
	}

}

 有过eclipse插件开发经验的人应该很快就能明白,这就是该工程——实际上就是上一篇文章中所称的bundle在Equinox平台中的启动入口,相当于我们的熟悉的main函数,如果将该bundle运行到Equinox中,首先进入该bundle的是Activator的start方法,你可以将相关的服务、资源在该方法内完成向bundleContext的注册——文章后面会具体讲到相关内容。在运行期,如果想要该bundle停止运行,Equinox平台将调用Activator的stop方法,你可以在该方法内完成资源的注销等工作。
下面我们将要完成首次的Equinox运行,将向大家展现bundle到底是如何运行起来的。为helloworld选择运行方式,如下图所示:

弹出如下对话框: 

 

在弹出的对话框中,新建一个OSGi Framework运行环境(双击OSGi Framework即可,这里为其取名Equinox),选中helloworld(1.0.0),然后点击右边的Add Required Bundles按钮,eclipse将自动选中运行helloworld的依赖bundle,如果有必要,可以点击右下的Validate Bundles验证按钮,验证程序正常运行所需的bundle是否都被选中,最后点击运行,回到控制台:
osgi> Hello World!
可以看到,之前在Activator的start方法中的输出语句已经被输出到控制台,我们可以通过命令ss查看Equinox的运行情况,可以看到一共运行了两个bundle,如下:
ss

Framework is launched.

id State       Bundle
0 ACTIVE      org.eclipse.osgi_3.4.3.R34x_v20081215-1030
1 ACTIVE      helloworld_1.0.0
还记得之前讲到过的bundle的几种状态吧?helloworld已经运行起来了。
那么Equinox具体支持哪些命令呢?下表列出了主要的一些命令,如需查看更详细的命令清单,则可以在控制台键入help。

类别

命令

含义

控制框架

launch

启动框架

shutdown

停止框架

close

关闭、退出框架

exit

立即退出,相当于 System.exit

init

卸载所有 bundle(前提是已经 shutdown

setprop

设置属性,在运行时进行

控制 bundle

install

安装

uninstall

卸载

start

启动

stop

停止

refresh

刷新

update

更新

展示状态

status

展示安装的 bundle 和注册的服务

ss

展示所有 bundle 的简单状态

services

展示注册服务的详细信息

packages

展示导入、导出包的状态

bundles

展示所有已经安装的 bundles 的状态

headers

展示 bundles 的头信息,即 MANIFEST.MF 中的内容

log

展示 LOG 入口信息

其它

exec

在另外一个进程中执行一个命令(阻塞状态)

fork

EXEC 不同的是不会引起阻塞

gc

促使垃圾回收

getprop

得到属性,或者某个属性

控制启动级别

sl

得到某个 bundle 或者整个框架的 start level 信息

setfwsl

设置框架的 start level

setbsl

设置 bundle start level

setibsl

设置初始化 bundle start level

 

至此,我们已经成功的演示了helloworld,初步了解了OSGi的bundle是如何开发并运行的,下面将进入我们的正题,下面我们将通过一个稍微复杂的示例,讲解bundle之间如何进行包依赖、注册及调用服务。

 

未完待续。。

分享到:
评论

相关推荐

    Spring与OSGI整合 计算器例子(转) +附整合代码和spring-osgi核心jar

    标题中的“Spring与OSGI整合 计算器例子(转) +附整合代码和spring-osgi核心jar”表明我们将探讨如何将Spring框架与OSGi(Open Services Gateway Initiative)模块化系统进行集成,并通过一个计算器的例子来说明这个...

    OSGI整合Spring、Mybatis、Spring MVC实现一个登录应用案例

    在这个案例中,我们将探讨如何整合OSGI、Spring、Mybatis以及Spring MVC来实现一个登录应用。这个教程旨在帮助开发者理解如何在OSGI环境中集成这些流行的Java技术,以构建灵活且可扩展的应用程序。 首先,我们需要...

    spring-dm-osgi整合jar包

    标题“spring-dm-osgi整合jar包”和描述“spring-dm整合osgi所需所有jar包”提及的核心知识点是Spring Dynamic Modules(简称Spring DM)与OSGi(Open Service Gateway Initiative)框架的集成。这两个技术在Java...

    RAP 整合 Spring (基于 Spring-osgi )

    标题 "RAP 整合 Spring(基于 Spring-osgi)" 暗示了本文将探讨如何在 RAP(Remote Application Platform)框架中集成 Spring 框架,并利用 Spring-osgi 进行服务管理和依赖注入。RAP 是一个用于构建富客户端应用...

    eclipse下构建spring与OSGI项目

    本教程将详细讲解如何在Eclipse环境中构建一个整合了Spring和OSGi的项目。 首先,我们需要了解Spring框架。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的...

    Eclipse RCP与Spring OSGi技术详解与最佳实践

    《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自...实战篇(第13-15章)详细讲解了Eclipse RCP与Spring OSGi框架、Hibernate ORM框架、JPA规范、Maven工具的整合,以及它与Java的模块化设计

    OSGISpring OSGISpring

    2. **Spring与OSGI的桥梁**:Spring Dynamic Modules(SDM)是Spring项目的一部分,它提供了在OSGI环境中使用Spring的基础设施。SDM允许Spring应用在OSGI容器中作为bundles运行,并管理它们的生命周期。 3. **服务...

    基于OSGi和Spring开发Web应用

    它放弃了传统的Java EE服务器标准,转而采用一套全新的基于OSGi内核的部署和打包系统,从而更加自然地整合了Spring编程模型。这种创新的架构不仅简化了应用服务器的配置和管理,同时也提升了应用的性能和稳定性。 #...

    osgi spring实例

    至于压缩包内的"整合代码原版",这可能是一个完整的项目源码,包括了OSGi和Spring的配置文件、服务定义、bundle实现、启动脚本等。开发者可以通过分析这些代码,了解如何在OSGi环境下配置和管理Spring应用,以及如何...

    Spring-OSGI 1.0 M3 中文手册

    对于企业级应用,Spring动态模块与OSGI平台的整合能提供以下功能: 模块内部更好的应用逻辑分离 同时部署同一模块的多个版本 在系统中动态发现和使用模块提供的服务 在系统运行时动态安装,更新和卸载模块 ...

    OSGI入门和整合Spring

    3. **使用Declarative Services(DS)**:OSGI DS提供了一种声明式的方式来管理OSGI服务的生命周期,使得Spring的bean可以与OSGI服务无缝集成。 4. **动态依赖注入**:由于OSGI的动态性,服务可以在运行时添加或...

    OSGI资料,OSGI进阶,OSGI实战,OSGI入门和整合Spring

    本资料集合涵盖了OSGI的入门、进阶以及实战应用,特别是与Spring框架的整合。 《OSGI进阶》着重介绍了OSGI的核心概念和技术细节,包括: 1. **模块系统**:OSGI基于JAR文件作为模块的基本单位,每个模块都有自己的...

    OSGI应用中整合Spring、Mybatis、Spring MVC案例

    要整合Spring,我们需要创建一个Spring配置文件,定义所需的bean,并确保这些bean可以在OSGI容器中被正确地加载和管理。 Mybatis是一个轻量级的持久层框架,它提供了一种灵活的SQL映射机制,减少了JDBC代码的编写。...

    Spring OSGi 入门.pdf

    Spring OSGi 与 Spring 框架的整合 - **Bean 容器**: Spring OSGi 使用 OSGi 服务作为 Spring Bean,实现服务的动态发现和依赖注入。 - **配置管理**: OSGi 服务注册表可以被 Spring 配置,允许 Spring 配置动态...

    学习SpringDM+OSGI的总结

    #### SpringDM+OSGI整合挑战 最后,我们来看看如何将SpringDM与OSGI结合使用,并解决其中遇到的一些问题。 1. **版本冲突**:在整合过程中,可能会遇到版本不兼容的问题。例如,SpringDM中的`org.springframework....

    基于osgi整合ssm框架注解开发

    总结,"基于osgi整合ssm框架注解开发"的主题涵盖了使用OSGi的模块化特性来管理和部署基于Spring、SpringMVC和MyBatis的Web应用,同时利用注解简化配置和开发过程。通过这样的整合,开发者可以构建出高度可扩展、模块...

    基于VirgoServer进行Spring Osgi Web开发

    在本文中,我们将深入探讨如何基于VirgoServer进行Spring Osgi Web开发,这是一个涉及OSGi容器、Spring框架和Web应用程序的集成技术。首先,我们需要确保拥有正确的开发环境和工具,包括Spring Tool Suite (STS),...

Global site tag (gtag.js) - Google Analytics