http://blog.csdn.net/lfsf802/article/details/19773533
近忙于产品的报警功能,采用的是esper的java事件处理框架来实现的这个功能,关于esper的介绍参照前面对esper介绍的博客。
那么如果利用OSGI的功能和epser框架集成呢?
其实在OSGI中有这样一个BundleLinstener类,就是用这个类来进行集成的,首先在OSGI其实是有两个BundleListener类的一个是同步的一个是异步的,其中BundleListener是异步的,而SynchronousBundleListener是异步的。
两个类都可以监听bundle的installed, resolved, starting, started, stopping, stopped, updated,unresolved, uninstalled时的事件。
这样就可以了,这时候可以自定一个listener接口,并且实现一个changeBundle方法,就可以监听到bundle的各个状态,通过getType方法来获得bundle的状态,如果是2就是bundle启动的状态。
具体代码为,
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
public class AlarmBundleListener implements BundleListener {
@Override
public void bundleChanged(BundleEvent event) {
System.out.println(event.getType());
System.out.println("-------------------------------"+event.getBundle().getSymbolicName());
}
}
这时候就可以在bundle开启的时候进行报警引擎的开启,也就是在之前epser博客中介绍的引擎开启的代码。并且将所有的报警的EPL语句进行监听,如果报警信息进入esper引擎并且符合EPL的语句我们就可以进行相应的报警的业务处理了。
分享到:
相关推荐
`OSGI bundle change listener`是指用于监听OSGi环境中bundle状态变化的机制。 在OSGi框架中,bundle的状态可以是`INSTALLED`、`RESOLVED`、`STARTING`、`ACTIVE`、`STOPPING`或`UNINSTALLED`。开发者通常需要知道...
在OSGi环境中,每个bundle都有自己的类加载器,这使得bundle可以加载自己特有的类库,而不会与系统中的其他bundle冲突。同时,OSGi提供了动态性,允许bundle在运行时安装、启动、更新或停止,这对于软件的维护和升级...
OSGi的核心是模块化,每个模块称为一个Bundle,它包含类、资源和元数据。每个Bundle都是自包含的,可以独立运行。OSGi框架负责管理这些Bundle的生命周期,包括启动、停止、更新和卸载。此外,OSGi提供服务注册和查找...
- 结构原理:Web容器注册Struts OSGi监听器,监听器控制Apache Felix Host,Felix Host启动和管理Felix Framework,而Struts OSGi Plugin监听bundle的变化,当检测到Struts bundle时,加载相应的Struts配置。...
**基于OSGi的Web Bundle详解** 在Java世界中,OSGi(Open Service Gateway Initiative)是一种模块化系统和Java服务框架,它允许动态地部署、发现、依赖管理和卸载软件组件。OSGi的核心概念是Bundle,它类似于Java...
在实际开发中,`listener-test`这个文件可能是一个测试用例,用于验证你所实现的bundle监听器是否能够正确地接收到并处理bundle生命周期事件。测试通常会模拟不同的bundle状态变化,然后检查监听器的方法是否被正确...
类空间一致性是OSGi中一个重要的概念,它确保了bundle之间的类加载不会产生冲突。“使用”约束则用于指定一个bundle必须依赖的其他bundle。 #### 四、服务介绍 **4.1 Java中的后期绑定** 后期绑定是指在运行时...
首先,理解OSGI的关键在于其模块化系统,每个模块称为一个bundle,它们有自己的类加载器,可以独立加载和运行。这种设计使得OSGI能够实现动态依赖管理和版本控制,为开发者提供了更细粒度的控制和更高的灵活性。 ...
OSGI框架由一组称为"bundle"的模块组成,每个bundle都是一个自包含的Java程序单元,包含类、资源以及元数据。这些bundle可以通过导出和导入包来声明它们提供的服务和依赖的服务。这种模块化设计使得开发者能够轻松地...
1. **OSGI基本概念**:包括bundle、服务、生命周期(启动、停止、暂停、更新和卸载)以及类加载器的工作原理。理解这些概念是使用OSGI的基础。 2. **模块化系统**:OSGI如何实现模块化,如何定义模块间的依赖关系,...
- **包管理和依赖解析**:每个bundle都有自己的类加载器,负责加载自身的类,并通过OSGI框架请求其他bundle的类。理解如何声明和管理依赖关系至关重要。 - **服务**:OSGI服务是模块间通信的主要方式。理解如何注册...
服务注册在OSGi服务注册表中,通过监听服务事件,Bundle可以动态地发现和使用服务,增加了软件组件之间的交互能力。 4. **生命周期管理**: OSGi提供了完整的生命周期管理API,包括安装(install)、启动(start)...
5. **事件机制**:OSGi框架提供了一个事件模型,允许Bundle监听和响应其他Bundle或框架事件,如服务的添加、修改和删除。 6. **动态模块更新**:OSGi允许在不中断服务的情况下更新Bundle,这对于持续集成和热修复...
每个bundle都有自己的类路径,并且可以独立加载、启动、停止和卸载,这使得系统具有高度的灵活性和可扩展性。 2. C++与OSGI的结合: 尽管OSGI最初设计用于Java,但通过使用C++的OSGI绑定库,如CppMicroServices或...
1. **创建Servlet Bundle**:首先,我们需要创建一个OSGi Bundle,包含Servlet类。这可以通过使用Maven的BND插件或者使用Apache Felix的Maven Bundle Plugin实现。在bundle的MANIFEST.MF文件中,需要声明Servlet的类...
5. **事件机制**:当Bundle的状态改变或服务注册/注销时,OSGI会发布相应的事件,允许其他模块监听并作出响应。 **三、OSGI在实际开发中的应用** 1. **大型项目模块化**:OSGI可以帮助大型项目实现模块化,每个...
3. **生命周期管理**:OSGi 提供了启动、停止、更新和卸载 Bundle 的控制,使得应用程序可以在运行时动态地添加或移除模块。 现在,让我们详细探讨 OSGi Core 4.2.0 版本的关键特性: **1. Bundle 生命周期**: -...
创建一个OSGi bundle涉及到几个步骤:创建、编码、运行和导出。 **4.1 创建** 首先,在Eclipse IDE中创建一个新的OSGi bundle项目。 **4.2 编码** 接着,编写bundle的代码。这可能包括实现服务接口、定义服务类...
1. **模块系统**:OSGi的核心是模块化,每个模块称为一个Bundle,它包含类、资源和元数据。Bundle之间通过导出和导入包来实现依赖关系。 2. **生命周期管理**:OSGi Bundle有启动、停止、安装、更新和卸载等状态,...
5. **包解析**:OSGI规范定义了一种机制,使得bundle可以在运行时解析和访问其他bundle提供的类和资源,而无需将所有代码打包到单个大 jar 文件中。 6. **安全模型**:OSGI提供了细粒度的安全控制,允许管理员为每...