`
a1520708
  • 浏览: 28117 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OSGI插件更新

    博客分类:
  • osgi
阅读更多
OSGI环境中 ,可以通过BundleContext 来获取环境中的bundle, 对bundle我们可以进行start,stop,uninstall,update; 安装可以通过bundleContext.install(路径);来安装; 但插件没有提供refresh的方法,在运行中的bundle通过update操作可能不会更新,安装补丁后,也需要刷新宿主,这样通过程序来控制得特殊处理;实际上提供了refresh方法,但比较不好找而已;
首先在你的Activator 中实现ServiceTrackerCustomizer接口
public class Activator implements BundleActivator, ServiceTrackerCustomizer  {

  private ServiceTracker packageAdminTracker;
  
  private static PackageAdmin packageAdmin;

  private static BundleContext context;

  public static BundleContext getContext() {
    return context;
  }
  
  public static PackageAdmin getPackageAdminInstance() {
    return packageAdmin;
  }

  public void start(BundleContext bundleContext) throws Exception {
    Activator.context = bundleContext;
    Activator.resumePluginRegistry = new ArrayList();
    
    packageAdminTracker = new ServiceTracker(context, PackageAdmin.class.getName(), this);
    packageAdminTracker.open();
  }

  public void stop(BundleContext bundleContext) throws Exception {
    packageAdminTracker.close();
    packageAdminTracker = null;
      }

 public Object addingService(ServiceReference reference) {
    synchronized (Activator.class) {
      packageAdmin = (PackageAdmin) context.getService(reference);
    }
    return packageAdmin;
  }

  public void modifiedService(ServiceReference reference, Object service) {
  }

  public void removedService(ServiceReference reference, Object service) {
    synchronized (Activator.class) {
      context.ungetService(reference);
      packageAdmin = null;
    }
  }

}


实现一个跟踪器,这样在程序中可以通过
Activator.getPackageAdminInstance().refreshPackages(new Bundle[] { bundle });
来更新你的要更新的插件
分享到:
评论
2 楼 a1520708 2011-11-16  
lhgyy00 写道
bundleContext可以获得bundle,bundle本身就有start,stop等方法,不知道是不是你写的这个意思

有start,stop这些方法 ,但没有refresh刷新这个方法
1 楼 lhgyy00 2011-11-15  
bundleContext可以获得bundle,bundle本身就有start,stop等方法,不知道是不是你写的这个意思

相关推荐

    osgi插件化开发流程

    osgi插件化开发流程

    OSGI 实例eclipse插件开发

    理解每个模块的功能和它们之间的交互关系是成功开发OSGI插件的关键。同时,掌握OSGI的生命周期管理和服务发现机制,以及Spring在OSGI环境下的工作原理,对于构建灵活、可扩展的Eclipse插件至关重要。

    OSGI进阶插件开发

    在OSGi中,软件被分解为称为"bundle"的小型独立单元,每个bundle都包含自己的类路径和元数据,使得开发者可以独立地更新、安装和卸载这些组件,而不会影响到系统中的其他部分。本教程将深入探讨如何基于OSGi进行高级...

    osgi 插件开发

    ### OSGi插件开发详解 #### OSGi概述 **OSGi**,即Open Service Gateway Initiative,是一种针对Java的动态模块系统。它为模块化应用程序的开发提供了一个基础架构,使得开发者能够轻松管理和控制各个模块间的依赖...

    OSGi.NET插件框架

    开放工厂向您提供了规范化的OSGi.NET插件框架和可复用的插件仓库,通过插件仓库来解决应用系统的持续集成、远程管理、自动更新、敏捷发布,无缝实现开发/QA/运维间无缝协作,并允许您将自定义的插件共享。 插件仓库...

    incubator-taverna-osgi:Apache Taverna OSGi 插件系统(暂存)

    8. **社区支持**:Apache Taverna作为一个开源项目,其OSGi插件系统也受益于开源社区的贡献,这包括bug修复、新功能开发以及丰富的插件资源。 在`incubator-taverna-osgi-master`这个文件列表中,我们可以推测这是...

    漂亮的WPF界面框架(OSGi.NET插件)源码

    该界面框架是在ModernUI(http://mui.codeplex.com/)基础上开发的非常现代、漂亮的通用界面框架,通过简单的配置,您可以将自定义的功能注册到页面。...使用的OSGi.NET插件 欢迎感兴趣的用户下载研究

    OSGI 开发文档中文的

    6. **插件模块开发**:如何设计和实现OSGI插件,包括定义插件接口、实现业务逻辑、打包和部署。这部分内容可能涉及Maven或Gradle的OSGI插件,以及如何配置它们来生成符合OSGI规范的JAR。 7. **代码示例**:提供的...

    osgi 实战 pdf

    《OSGi实战》一书由BlueDavy撰写,是一份详尽的OSGi入门与实战指南,适合初学者和有经验的开发者深入了解OSGi框架及其应用。以下是对该书籍核心知识点的总结: ### OSGi简介 OSGi(Open Service Gateway Initiative...

    OSGI.rar_OSGI eclipse_osgi

    通过学习这些资源,你可以了解到如何创建、配置和管理OSGI Bundle,如何在Eclipse中开发和调试OSGI插件,以及如何利用OSGI的动态性来优化大型Java项目。理解并掌握OSGI将有助于提升你的Java开发技能,尤其是在构建...

    osgi介绍osgi介绍

    3. **开发工具**:Eclipse IDE就是基于OSGi构建的,其插件系统也是OSGi的一种应用实例。 4. **云平台**:OSGi的动态性使其适合云环境中的服务部署和管理。 ### OSGi的挑战与实践: 1. **复杂性**:OSGi的模块化和...

    仿Outlook风格界面框架(OSGi.NET插件)

    OSGi.NET是.NET平台上的一个插件系统,它是Open Service Gateway Initiative(OSGi)规范的一个实现。OSGi的主要目标是为Java和.NET应用提供模块化系统,使开发者能够构建可扩展、可维护的应用程序。它通过动态服务...

    OSGI常用通信实例

    OSGI(Open Services Gateway Initiative)是一种开放的标准,用于创建模块化和可动态更新的应用程序和服务。在本实例中,我们看到OSGI与C++的结合,以及如何在Visual Studio 2010和Qt 5.11环境中实现插件间的通信。...

    osgi,林昊写的osgi实战和进阶

    OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为一系列可独立部署、更新和交互的服务。林昊所著的《OSGI实战》与《OSGI进阶》是深入理解OSGI技术的重要参考资料,适合...

    OSGI.rar_OSGI eclipse_eclipse osgi_java OSGI_osgi

    Eclipse中的OSGI使得插件系统成为可能,每个插件都是一个独立的OSGI模块。 在"OSGI.rar_OSGI eclipse_eclipse osgi_java OSGI_osgi"这个压缩包中,我们可以找到"OSGI实战.pdf",这很可能是关于如何在Eclipse环境下...

    WPF树状界面-OSGI.net

    在WPF应用中,OSGI.net可能被用来管理各个UI组件的生命周期,以及动态加载和更新UI相关的服务和功能。 **WPF树状界面** Windows Presentation Foundation(WPF)是微软提供的一个用于创建桌面应用的丰富的图形用户...

    Osgi的简单实现

    - 构建bundle:使用构建工具如Maven或Gradle,配置相应的Osgi插件来生成bundle JAR文件。 4. **Eclipse中的Osgi实现** 描述中提到的"简单用代码解释了过程"可能指的是通过Eclipse插件开发的过程。在Eclipse中,...

    tomcat嵌入OSGI容器

    OSGI是一种Java平台上的服务导向架构,它允许动态地加载、卸载和更新软件组件,提高了灵活性和可维护性。 描述中提到“新版的tomcat融合OSGI容器程序,老版的不好使,自己改了下”,这暗示了在旧版本的Tomcat中,...

    OSGi入门教程(OSGi Introduce)

    1. **插件化(Bundles)**:OSGi系统完全基于Bundles(类似于Java的jar包)构建,每个Bundle都是一个独立的模块,能够动态安装、更新或移除,实现了系统的热插拔功能。 2. **动态性**:OSGi提供了完整的交互机制,...

Global site tag (gtag.js) - Google Analytics