有网友问我有没有osgi的demo,于是将前段时间给朋友的一个例子拿来整理了一下。
首先,这个demo是在karaf下运行的,项目由三个bundle组成,会涉及自定义的console命令,服务的发布和引用。
项目为maven项目,为方便构建,将三个bundle项目作为一个父项目下的三个子项目。项目经mvn package构建后,在三个子项目的target文件夹下分别生成了Calculator-1.0.jar、AddModule-1.0.jar、SubModule-1.0.jar三个bundle,这三个bundle分别为:
1、Calculator bundle,负责处理console输入的命令;
2、AddModule bundle,负责提供计算加法的服务;
3、SubModule bundle,负责提供计算减法的服务;
到http://karaf.apache.org下载karaf后,解压,将三个bundle复制到在<karaf-root>/deploy下,运行<karaf-root>/bin/karaf.bat(或karaf.sh)启动karaf,输入list,可以看到三个bundle状态均为ACTIVE,而且blueprint也是CREATE的状态。
这时就可以输入
karaf> calc:add 1 2
1 + 2 = 3
karaf> calc:sub 10 3
10 - 3 = 7
可尝试停了AddModule或SubModule后,输入以上命令,看结果如何。
分享到:
相关推荐
在这个“osgi基础demo-搭建servlet”项目中,我们将探讨如何在OSGi环境中创建并运行一个简单的Servlet应用程序。 首先,我们需要理解OSGi的核心概念。OSGi基于服务导向架构,每个模块称为一个Bundle,每个Bundle...
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ; charset=UTF-8"> <title>a test page <body>Hello, This is a test page! </html>
首先,C3P0是一个开源的JDBC连接池,它提供了一些额外的功能,如自动管理数据库连接、检测空闲连接以及自动回收等。在OSGi环境中,我们需要将C3P0的相关库(如com.mchange.v2.c3p0.jar)打包成一个bundle,然后在...
在OSGi环境中,自定义控制台命令是一个强大的特性,允许开发者扩展OSGi框架的功能,提供个性化的操作指令。本示例“osgi自定义控制台命令demo”将向我们展示如何创建和实现自己的控制台命令,以增强OSGi的交互性。 ...
### 开发一个简单的 OSGi Web 应用实例 #### 一、项目概述 本教程旨在通过一个具体的示例来介绍如何使用OSGi框架开发一个简单的Web应用。这个示例应用能够计算两个数字的和或乘积,并展示了OSGi bundle的动态部署...
在标题“osgi-ds对应的demo”中,我们可以推测这是一个关于OSGi Declarative Services的示例项目。这个项目可能包含了两个部分:“1..1”和“1..n”,这可能代表了两种不同的服务关系或服务配置模式。"1..1"可能表示...
标题"OSGi Spring实例"表明这是一个关于如何在OSGi环境中集成和使用Spring框架的实际应用示例。这个实例可能包含了配置文件、源代码和其他必要的资源,使得开发者可以直接参考和使用。 描述中的"osgi集成spring的...
本示例通过一个名为“myself”的工程,展示了如何利用OSGi来处理版本冲突。 在Java开发中,常常会遇到类加载器冲突,特别是当多个项目依赖于不同版本的相同库时。例如,一个项目可能依赖于库A的v1.0,而另一个项目...
这个标题“一个关于osgi的例子”暗示我们将探讨如何使用OSGi进行模块化开发。 在描述中提到,压缩包包含两个文件夹:OsgiSrc和OsgiDemo。OsgiSrc很可能是包含源代码的文件夹,开发者可以查看和学习OSGi服务的实现...
该Demo模拟了这样一个功能, 从OSGI命令行接收到一个命令: 服务名 参数1 参数2 就能将服务转发到对应的服务插件上去. 比如: AddService 12 34 这样就能将参数传递给AddService这样的服务, 并得到两个参数相加的结果
标题“OSGi到底给我们带来了什么[附PPT和Demo]”表明,这个资源可能包含一个介绍OSGi的演示文稿(PPT)和实际操作示例(Demo),帮助读者理解OSGi的实际应用和优势。通常,PPT会通过视觉方式展示OSGi的关键概念和...
同样,它可以作为一个OSGi服务暴露出来,由Spring管理其生命周期和依赖。 4. `com.zxn.example.web`:此包很可能包含了Web层的组件,比如Spring MVC的控制器(Controller),负责处理HTTP请求,调用业务逻辑层的...
LocalDictQuery同样可能实现了DictQuery接口,提供了一种在同一个OSGi环境内的字典查询功能。 通过这些示例文件,我们可以深入理解OSGi如何处理服务的发布、查找和使用。每个服务都有其特定的上下文和功能,而OSGi...
总之,这个压缩包和相关博客文章为我们提供了一个学习OSGi实战经验的机会,涵盖了从基础概念到具体实践的多个方面。通过研究源码和工具,我们可以深入理解OSGi如何实现模块化,以及如何利用这一技术来构建更灵活、更...
总结来说,OSGi提供了一个强大的模块化系统,通过服务导向的架构,使Java应用更加灵活和可维护。开发者通过掌握OSGi,能够构建更高效、可扩展的系统,同时也能更好地应对复杂的应用场景和持续变化的需求。如果你计划...
本教程将详细讲解如何将OSGI部署为一个可运行的例子,帮助你了解其基本概念和操作流程。 一、OSGI基础 1. 模块化系统:OSGI的核心是模块化,每个模块称为一个Bundle,每个Bundle都包含类、资源和元数据,它们有...
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序以模块化的方式构建,每个模块称为一个Bundle。在这个案例中,我们将探讨如何整合OSGI、Spring、Mybatis以及Spring MVC来...
5. **EnqiNX和OSGI的关系**:EnqiNX是一个基于OSGI的开源企业应用框架,它扩展了OSGI规范,提供了更高级的企业级功能,如安全管理、配置管理、事件管理和事务管理等。 6. **插件模块开发**:如何设计和实现OSGI插件...