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 });
来更新你的要更新的插件
分享到:
相关推荐
osgi插件化开发流程
理解每个模块的功能和它们之间的交互关系是成功开发OSGI插件的关键。同时,掌握OSGI的生命周期管理和服务发现机制,以及Spring在OSGI环境下的工作原理,对于构建灵活、可扩展的Eclipse插件至关重要。
在OSGi中,软件被分解为称为"bundle"的小型独立单元,每个bundle都包含自己的类路径和元数据,使得开发者可以独立地更新、安装和卸载这些组件,而不会影响到系统中的其他部分。本教程将深入探讨如何基于OSGi进行高级...
### OSGi插件开发详解 #### OSGi概述 **OSGi**,即Open Service Gateway Initiative,是一种针对Java的动态模块系统。它为模块化应用程序的开发提供了一个基础架构,使得开发者能够轻松管理和控制各个模块间的依赖...
开放工厂向您提供了规范化的OSGi.NET插件框架和可复用的插件仓库,通过插件仓库来解决应用系统的持续集成、远程管理、自动更新、敏捷发布,无缝实现开发/QA/运维间无缝协作,并允许您将自定义的插件共享。 插件仓库...
8. **社区支持**:Apache Taverna作为一个开源项目,其OSGi插件系统也受益于开源社区的贡献,这包括bug修复、新功能开发以及丰富的插件资源。 在`incubator-taverna-osgi-master`这个文件列表中,我们可以推测这是...
该界面框架是在ModernUI(http://mui.codeplex.com/)基础上开发的非常现代、漂亮的通用界面框架,通过简单的配置,您可以将自定义的功能注册到页面。...使用的OSGi.NET插件 欢迎感兴趣的用户下载研究
6. **插件模块开发**:如何设计和实现OSGI插件,包括定义插件接口、实现业务逻辑、打包和部署。这部分内容可能涉及Maven或Gradle的OSGI插件,以及如何配置它们来生成符合OSGI规范的JAR。 7. **代码示例**:提供的...
《OSGi实战》一书由BlueDavy撰写,是一份详尽的OSGi入门与实战指南,适合初学者和有经验的开发者深入了解OSGi框架及其应用。以下是对该书籍核心知识点的总结: ### OSGi简介 OSGi(Open Service Gateway Initiative...
通过学习这些资源,你可以了解到如何创建、配置和管理OSGI Bundle,如何在Eclipse中开发和调试OSGI插件,以及如何利用OSGI的动态性来优化大型Java项目。理解并掌握OSGI将有助于提升你的Java开发技能,尤其是在构建...
3. **开发工具**:Eclipse IDE就是基于OSGi构建的,其插件系统也是OSGi的一种应用实例。 4. **云平台**:OSGi的动态性使其适合云环境中的服务部署和管理。 ### OSGi的挑战与实践: 1. **复杂性**:OSGi的模块化和...
OSGi.NET是.NET平台上的一个插件系统,它是Open Service Gateway Initiative(OSGi)规范的一个实现。OSGi的主要目标是为Java和.NET应用提供模块化系统,使开发者能够构建可扩展、可维护的应用程序。它通过动态服务...
OSGI(Open Services Gateway Initiative)是一种开放的标准,用于创建模块化和可动态更新的应用程序和服务。在本实例中,我们看到OSGI与C++的结合,以及如何在Visual Studio 2010和Qt 5.11环境中实现插件间的通信。...
OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为一系列可独立部署、更新和交互的服务。林昊所著的《OSGI实战》与《OSGI进阶》是深入理解OSGI技术的重要参考资料,适合...
Eclipse中的OSGI使得插件系统成为可能,每个插件都是一个独立的OSGI模块。 在"OSGI.rar_OSGI eclipse_eclipse osgi_java OSGI_osgi"这个压缩包中,我们可以找到"OSGI实战.pdf",这很可能是关于如何在Eclipse环境下...
在WPF应用中,OSGI.net可能被用来管理各个UI组件的生命周期,以及动态加载和更新UI相关的服务和功能。 **WPF树状界面** Windows Presentation Foundation(WPF)是微软提供的一个用于创建桌面应用的丰富的图形用户...
- 构建bundle:使用构建工具如Maven或Gradle,配置相应的Osgi插件来生成bundle JAR文件。 4. **Eclipse中的Osgi实现** 描述中提到的"简单用代码解释了过程"可能指的是通过Eclipse插件开发的过程。在Eclipse中,...
OSGI是一种Java平台上的服务导向架构,它允许动态地加载、卸载和更新软件组件,提高了灵活性和可维护性。 描述中提到“新版的tomcat融合OSGI容器程序,老版的不好使,自己改了下”,这暗示了在旧版本的Tomcat中,...
1. **插件化(Bundles)**:OSGi系统完全基于Bundles(类似于Java的jar包)构建,每个Bundle都是一个独立的模块,能够动态安装、更新或移除,实现了系统的热插拔功能。 2. **动态性**:OSGi提供了完整的交互机制,...