`

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());
}
}

}
分享到:
评论

相关推荐

    sisu-guice-peaberry-example:OSGI技术展示

    一次集中配置自定义Guice类型监听器-构建OSGI捆绑包并生成清单文件,而无需修改打包类型-为ManagedService的ConfigAdmin条目自动生成元类型XML建立mvn全新安装在Felix容器中启动示例mvn exec:exec -pl main调试8000...

    Jetty中文手册

    如何使用非root用户监听80端口 如何配置连接器(Connectors) 如何配置虚拟主机(Virtual Hosts) 如何配置会话ID(Session IDs) 如何序列化会话(Session) 如何重定向或移动应用(Context) 如何让一个应用响应一...

    Liferay7门户集成Activiti BPM用户组同步

    在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户、组的同步需求非常重要,用来实现签收组的概念,比如指定签收组、会签、抢签都需要用到。 Activiti可以通过自定义实现SessionFactory,...

    Java整合SSH框架

    org.springframework.web-x.x.x.RELEASE.jar:在web.xml中配置启动Spring容器所需,包括上下文和监听器。 Struts2相关的jar包: Struts2的核心库,如struts2-core-x.x.x.jar。 以及其他与Struts2相关的库,例如用于...

    libusb10j:使用JNA从Java桥接libusb 1.0

    libusb10j libusb10j使用JNA(Java本机访问)库在Java中启用libusb 1.0。 它是之上的Java薄层。该库打包为OSGi捆绑包。发行说明版本1.0.4-2015-07-19 更改的回购网址版本1.0.3-2015-07-07 搬到Github 版本1.0.2-2014...

    Spring攻略(第二版 中文高清版).part2

    2.14 使用应用事件进行通信 93 2.14.1 问题 93 2.14.2 解决方案 93 2.14.3 工作原理 94 2.15 在Spring中注册属性编辑器 96 2.15.1 问题 96 2.15.2 解决方案 96 2.15.3 工作原理 97 2.16 创建自定义...

    Spring攻略(第二版 中文高清版).part1

    2.14 使用应用事件进行通信 93 2.14.1 问题 93 2.14.2 解决方案 93 2.14.3 工作原理 94 2.15 在Spring中注册属性编辑器 96 2.15.1 问题 96 2.15.2 解决方案 96 2.15.3 工作原理 97 2.16 创建自定义...

    czerocase-logging-listener-console:框架 CZeroCase 的“日志控制台”模块

    czerocase-logging-listner-console 日志记录模块监听器日志控制台。 对于框架CZeroCase 。CZEROCASE 项目CZero 是一个用于自适应案例管理的开源平台,旨在简化高级解决方案的创建,以支持文档、记录、人员和流程...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

Global site tag (gtag.js) - Google Analytics