`

osgi中事件监听

阅读更多

osgi事件监听至少需要两个包,导入
(1)org.osgi.framework
(2) org.osgi.framework.hooks.bundle


主要代码如下,可行:

public class Activator implements BundleActivator,FrameworkListener,BundleListener,ServiceListener {

private static BundleContext context;

static BundleContext getContext() {
return context;
}

/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
//获取osgi环境中安装的所有bundle
for(Bundle bundle:bundleContext.getBundles()){
System.out.println("bundle symbolic name: " + bundle.getSymbolicName());
System.out.println("osgi.framework="+context.getProperty("osgi.framework"));
}
context.addFrameworkListener(this);
context.addBundleListener(this);
context.addServiceListener(this);
}

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

@Override
public void serviceChanged(ServiceEvent event) {
// TODO Auto-generated method stub
if((event.getType() & ServiceEvent.REGISTERED) != 0) {
System.err.println("Service Register: " + event.getServiceReference());
}
}

@Override
public void bundleChanged(BundleEvent event) {
// TODO Auto-generated method stub
if((event.getType() & BundleEvent.STARTED) != 0) {
System.err.println("bundle started: " + event.getBundle());
} else if((event.getType() & BundleEvent.STOPPED) != 0) {
System.err.println("Bundle Stopped: " + event.getBundle());
}
}

//处理框架事件
@Override
public void frameworkEvent(FrameworkEvent event) {
// TODO Auto-generated method stub
if((event.getType() & FrameworkEvent.ERROR) != 0){
System.err.println("Framework Error: " + event.getBundle());
}
}

}
分享到:
评论

相关推荐

    OSGI 开发文档中文的

    5. **EnqiNX和OSGI的关系**:EnqiNX是一个基于OSGI的开源企业应用框架,它扩展了OSGI规范,提供了更高级的企业级功能,如安全管理、配置管理、事件管理和事务管理等。 6. **插件模块开发**:如何设计和实现OSGI插件...

    OSGI 进阶源码和中文文档

    5. **事件机制**:OSGI提供了一种事件传递机制,允许bundle监听和响应其他bundle发布的时间,增强了系统的响应性和灵活性。 6. **动态性**:OSGI的一个关键特性是其动态性。系统可以在运行时安装、更新和移除bundle...

    OSGI常用通信实例

    此外,事件监听和发布也是常见的通信方式,bundle可以订阅特定的事件,当事件发生时得到通知。 6. 源代码分析: "osgi-demo-2016-06-27"可能包含示例项目的源代码,展示了如何创建和注册服务,如何在bundle之间...

    OSGI服务 DS EVENT

    而EVENT则是DS中关于事件处理的部分,用于在OSGI组件之间传递信息和协调工作。 OSGI服务是一种动态的服务注册和发现机制。在OSGI环境中,每个组件(Bundle)都可以提供或使用服务。当一个组件提供了服务,它会在...

    OSGI的消息机制及注册服务

    在OSGI框架中,bundle之间的通信主要通过服务事件和服务引用来实现。服务事件允许bundle监听其他bundle提供的服务的变化,例如服务的注册、修改或注销。这些事件可以被感兴趣的bundle订阅,以便在服务状态改变时采取...

    基于Eclipse开发OSGI的简单实例

    3. **事件监听**:可以使用`ServiceListener`或`ServiceTracker`监听服务的增删变化,以便做出相应调整。 4. **打包与部署**:将源码打包为`.jar`文件,然后在OSGi运行时中加载和启动。 ### 总结 通过Eclipse和...

    OSGi Service Platform Service Compendium

    OSGi 是一个模块化系统和动态部署平台,它允许将 Java 应用程序部署到复杂的环境(如企业服务器)中。 该文档是作为一个详尽的技术规范而编写的,旨在为开发人员提供关于如何使用 OSGi 服务框架来构建、部署和管理...

    OSGI.NET开放工厂使用示例.zip

    9. **事件监听**:你可以监听ServiceEvent,当服务的生命周期发生变化时(如注册、更改或注销),可以做出相应的响应。 通过这个OSGI.NET开放工厂的示例,开发者可以学习如何在C#环境中创建、管理和使用服务,以及...

    OSGISpring OSGISpring

    9. **实例化和生命周期管理**:OSGI提供了标准的生命周期方法,如start、stop等,Spring可以通过监听这些事件来管理其bean的生命周期。 10. **实战应用**:学习如何在实际项目中应用OSGISpring,如构建分布式系统、...

    OSGi in Practice 完整版

    - **信息隐藏**:OSGi中的每个模块(称为“bundle”)都拥有自己的命名空间,可以控制对外暴露的接口。 - **版本管理和并行版本**:OSGi支持精确的版本控制,允许同一系统的不同bundle使用不同版本的库。 **1.5 ...

    osgi-ds对应的demo

    在这个示例中,用户可能通过观察和运行代码来理解DS如何处理服务的自动装配、依赖注入和服务监听等核心功能。 标签“osgi, ds, service, bundle”进一步确认了讨论的主题,其中: 1. **osgi**:代表我们正在讨论的...

    OSGI-Jetty示例,Java源码,很得劲

    本示例将探讨如何在OSGI环境中集成和运行Jetty,以构建可扩展、灵活的Java Web应用。 首先,理解OSGI的关键在于其模块化系统,每个模块称为一个bundle,它们有自己的类加载器,可以独立加载和运行。这种设计使得...

    很久之前的osgi整理

    服务注册在OSGi服务注册表中,通过监听服务事件,Bundle可以动态地发现和使用服务,增加了软件组件之间的交互能力。 4. **生命周期管理**: OSGi提供了完整的生命周期管理API,包括安装(install)、启动(start)...

    利用felix和struts2实现osgi web

    - 结构原理:Web容器注册Struts OSGi监听器,监听器控制Apache Felix Host,Felix Host启动和管理Felix Framework,而Struts OSGi Plugin监听bundle的变化,当检测到Struts bundle时,加载相应的Struts配置。...

    OSGi基本原理pdf (by 静默虚空 )

    当一个模块想要使用另一个模块提供的服务时,它可以注册一个服务监听器来监听感兴趣的事件,或者查询服务注册表来发现服务。一旦发现感兴趣的服务,模块就可以与服务提供者进行绑定,以使用其功能。 OSGi框架为Java...

    OSGI相关

    5. **事件机制**:当Bundle的状态改变或服务注册/注销时,OSGI会发布相应的事件,允许其他模块监听并作出响应。 **三、OSGI在实际开发中的应用** 1. **大型项目模块化**:OSGI可以帮助大型项目实现模块化,每个...

    OSGi入门篇:服务层

    服务监听器用于监听服务的生命周期事件。当服务被注册、注销或修改时,OSGi框架会通知所有已注册的服务监听器。这允许应用程序响应服务状态的变化,例如自动重新绑定到一个新的服务实现。 5. 服务层的意义 使用...

    OSGi R4规范,中文版

    Bundle的状态变化是通过一系列的事件来驱动的,这些事件可以被其他组件监听以响应状态的变化。 ##### 3.4 包版本和依赖 在OSGi中,每个包都有一个版本号,这有助于解决不同组件之间版本不兼容的问题。当一个Bundle...

    Spring OSGI 快速入门中文教程

    2. **事件监听**:使用OSGi事件模型,监听并响应系统中的事件,实现bundle间的通信。 3. **国际化**:利用OSGi的资源包加载不同语言的文本资源。 **五、Spring OSGi进阶** 1. **蓝点编程模型**:理解蓝点API,实现...

Global site tag (gtag.js) - Google Analytics