osgi的通信代码
发布事件
BundleContext ctx = FrameworkUtil.getBundle(this.getClass())
.getBundleContext();
ServiceReference<EventAdmin> ref = ctx.getServiceReference(EventAdmin.class);
EventAdmin eventAdmin = ctx.getService(ref);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("DATA", new Date());
Event event = new Event("viewcommunication/syncEvent", properties);
eventAdmin.sendEvent(event);
event = new Event("viewcommunication/asyncEvent", properties);
eventAdmin.postEvent(event);
监听(订阅)事件
EventHandler handler = new EventHandler() {
public void handleEvent(final Event event) {
Date date=(Date) event.getProperty("DATA");
System.out.println("dfdfdfdf"+date);
}
};
Dictionary<String, String> properties = new Hashtable<String, String>();
properties.put(EventConstants.EVENT_TOPIC, "viewcommunication/*");
ctx.registerService(EventHandler.class, handler, properties);
在rcp中使用这种方式需要注意的就是:
org.eclipse.osgi.services;bundle-version="3.3.0",
org.eclipse.equinox.event;bundle-version="1.2.100"
这两个插件必须依赖
其中 org.eclipse.equinox.event 必须为自动加载
分享到:
相关推荐
在RCP中,OSGI作为底层的模块化框架,为RCP提供了动态加载和管理插件的能力。开发者可以通过创建OSGI Bundle来构建RCP插件,这些插件可以在运行时被RCP框架动态加载和卸载。这种结合使得RCP应用具备了高度的灵活性和...
在OSGI框架中,bundle之间的通信主要通过服务事件和服务引用来实现。服务事件允许bundle监听其他bundle提供的服务的变化,例如服务的注册、修改或注销。这些事件可以被感兴趣的bundle订阅,以便在服务状态改变时采取...
- **事件(Event)**:RCP使用事件驱动模型,组件通过监听和触发事件进行通信。 - **扩展点(Extension Point)**:允许插件之间进行扩展和集成,定义了其他插件可以插入的地方。 - **服务(Service)**:插件...
6. **服务(Services)**: RCP使用OSGi服务来提供组件间的通信。例如,邮件同步服务可能负责定期检查服务器上的新邮件,而认证服务则处理登录和授权。 7. **扩展点(Extension Points)**: RCP的可扩展性主要通过...
5. **故障排查**:学习如何使用日志、诊断工具和调试技巧来定位和解决OSGi应用中的问题。 6. **性能优化**:理解OSGi的内存管理和线程模型,对系统进行性能调优,提高运行效率。 通过深入学习和实践,你可以掌握...
总的来说,RCP 开发实例涉及到了使用 Eclipse RCP 构建桌面应用的全过程,包括设计组件化的用户界面、编写插件代码、利用 OSGi 进行模块化管理,以及使用 Eclipse PDE 进行开发和调试。虽然具体的博文链接不可用,但...
8. **事件和服务(Services)**:RCP提供了丰富的事件系统和服务接口,允许插件之间进行通信和协作。事件机制使得插件可以响应其他插件的行为,而服务则提供了共享数据和功能的方式。 9. **国际化(i18n)与本地化...
RCP使用扩展点(Extension Points)和扩展(Extensions)机制来实现插件之间的通信和集成。扩展点定义了插件可以提供的服务或功能,而其他插件可以通过声明对这些扩展点的扩展来使用这些服务。例如,一个插件可以...
例如,OSGi企业规范可能包含如何利用JMS(Java Message Service)来实现异步通信,或者如何使用EJB(Enterprise JavaBeans)和JPA(Java Persistence API)在OSGi环境中进行持久化操作。 在学习这些文档时,开发者...
7. **事件处理**:在Eclipse RCP中,事件驱动编程是常见的,理解如何正确处理事件和广播事件是关键。 8. **插件更新**:如何实现插件的动态更新,使得用户能够在不重启应用的情况下获取新功能或修复。 综上所述,...
为了确保RCP应用的性能,需要考虑内存管理和线程管理,合理使用事件模型,以及避免不必要的计算和渲染。 **10. 持续学习和进阶** 掌握RCP的基础只是第一步,更深入的学习包括使用MDI(多文档界面)、SWT/JFace高级...
在Eclipse插件开发中,RCP和SWT结合使用,使得开发者能够利用Eclipse的强大功能和SWT的高效性能来创建功能丰富的桌面应用程序。以下是一些关键知识点: 1. **插件体系结构**:Eclipse插件基于OSGi框架,每个插件都...
使用SWT(Standard Widget Toolkit)和JFace库来创建用户界面,利用OSGi服务实现插件间通信。 5. **配置与部署**:配置插件之间的依赖,打包成可执行的RCP应用,通过配置文件控制启动参数和应用行为。 6. **测试与...
9. **部署与打包**:最后,我们需要将OSGi应用打包成RCP(Rich Client Platform)应用或者部署到服务器环境。Eclipse的PDE(Plug-in Development Environment)工具可以协助完成这个过程。 总之,通过学习和实践...
在本教程中,我们将深入探讨如何使用RCP进行开发,通过一个简单的实例来开启你的RCP之旅。 首先,理解RCP的核心概念至关重要。**RCP应用**是由多个插件组成的,每个插件负责特定的功能。这些插件可以互相协作,共享...
6. **事件(Events)**:Eclipse使用事件模型来处理组件间的通信。开发者可以通过注册监听器(如`IPropertyChangeListener`)来响应各种工作台事件,例如文件改变或用户界面状态的更新。 7. **扩展点(Extension ...
RCP利用OSGi服务来管理和动态加载这些插件。源代码中可能包括了如何创建基本的RCP项目,定义插件结构,以及配置manifest.mf文件的示例。 2. **视图(Views)和编辑器(Editors)** 视图是显示特定信息或提供交互...
- **远程服务**:了解OSGi Remote Services,它允许bundle在不同OSGi框架之间通信,实现跨容器的服务交互。 - **事件和回调**:学习如何使用OSGi事件模型,当某个事件发生时,bundle可以注册监听器接收通知。 OSGi...
而插件则是RCP框架中的独立功能单元,它们通过OSGi服务进行交互,可以单独安装、更新或卸载,增强了软件的灵活性和可维护性。 **转换步骤:** 1. **分析现有RCP项目**:首先要了解当前RCP项目的结构,包括各个组件...
1. **Spring框架**:Spring支持OSGi,可以使用OSGi Bundle作为Spring的bean容器,实现模块化和依赖注入。 2. **Hibernate**:通过OSGi,可以实现Hibernate的动态加载和升级,便于数据库访问的管理。 3. **Eclipse ...