环境准备:


jdk版本号

jdk:1.7

karaf:

版本号:apache-karaf-3.0.1

下载地址:

http://pan.baidu.com/s/1qWM4Y1u

http://karaf.apache.org/

配置本地仓库:


參考:http://blog.csdn.net/wobendiankun/article/details/25333113

启动karaf:


karaf_home/bin/karaf.bat

启动成功例如以下:

安装 mvn-hello-provider 到本地仓库


hello.java


  1. package com.demo.hello;
  2.  
  3. public class Hello {
  4. private String name;
  5.  
  6. public String getName() {
  7. return name;
  8. }
  9.  
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13.  
  14. public Hello() {
  15. this.name="jack";
  16. }
  17. public void sayHi(){
  18. System.out.println("hi:\t"+this.name);
  19. }
  20.  
  21. }


pom.xml:


  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.demo.hello</groupId>
  6. <artifactId>mvn-hello-provider</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>bundle</packaging>
  9.  
  10. <name>mvn-hello-provider</name>
  11. <url>http://maven.apache.org</url>
  12.  
  13. <properties>
  14. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15. </properties>
  16.  
  17. <dependencies>
  18. <dependency>
  19. <groupId>junit</groupId>
  20. <artifactId>junit</artifactId>
  21. <version>4.10</version>
  22. <scope>test</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.osgi</groupId>
  26. <artifactId>org.osgi.core</artifactId>
  27. <version>4.2.0</version>
  28. </dependency>
  29. </dependencies>
  30.  
  31. <build>
  32. <plugins>
  33. <plugin>
  34. <groupId>org.apache.felix</groupId>
  35. <artifactId>maven-bundle-plugin</artifactId>
  36. <extensions>true</extensions>
  37. <configuration>
  38. <instructions>
  39. <Export-Package>com.demo.hello</Export-Package>
  40. </instructions>
  41. </configuration>
  42. </plugin>
  43. </plugins>
  44. </build>
  45. </project>

执行命令:

  1. mvn clean install

安装 mvn-hello-consumer 到本地仓库


HelloClientActivator.java

  1. package com.demo.hello.activator;
  2.  
  3. import org.osgi.framework.BundleActivator;
  4. import org.osgi.framework.BundleContext;
  5.  
  6. import com.demo.hello.Hello;
  7.  
  8. public class HelloClientActivator implements BundleActivator{
  9. Hello hello;
  10. public void start(BundleContext context) throws Exception {
  11. hello=new Hello();
  12. hello.sayHi();
  13. }
  14.  
  15. public void stop(BundleContext context) throws Exception {
  16. hello=null;
  17. }
  18.  
  19. }


pom.xml


  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.demo.hello</groupId>
  6. <artifactId>mvn-hello-consumer</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>bundle</packaging>
  9.  
  10. <name>mvn-hello-consumer</name>
  11. <url>http://maven.apache.org</url>
  12.  
  13. <properties>
  14. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15. </properties>
  16.  
  17. <dependencies>
  18. <dependency>
  19. <groupId>junit</groupId>
  20. <artifactId>junit</artifactId>
  21. <version>4.10</version>
  22. <scope>test</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.osgi</groupId>
  26. <artifactId>org.osgi.core</artifactId>
  27. <version>4.2.0</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>com.demo.hello</groupId>
  31. <artifactId>mvn-hello-provider</artifactId>
  32. <version>0.0.1-SNAPSHOT</version>
  33. </dependency>
  34. </dependencies>
  35.  
  36. <build>
  37. <plugins>
  38. <plugin>
  39. <groupId>org.apache.felix</groupId>
  40. <artifactId>maven-bundle-plugin</artifactId>
  41. <extensions>true</extensions>
  42. <configuration>
  43. <instructions>
  44. <Export-Package>com.demo.hello.client</Export-Package>
  45. <Private-Package>com.demo.hello.*</Private-Package>
  46. <Import-Package>com.demo.hello,
  47. org.osgi.framework
  48. </Import-Package>
  49. <Bundle-Activator>com.demo.hello.activator.HelloClientActivator</Bundle-Activator>
  50. </instructions>
  51. </configuration>
  52. </plugin>
  53. </plugins>
  54. </build>
  55. </project>

执行命令:

  1. mvn clean install

部署bundle到karaf

注意部署顺序

先部署,mvn-hello-provider,再mvn-hello-consumer

在karaf命令行中执行命令:


  1. bundle:install -s mvn:com.demo.hello/mvn-hello-provider/0.0.1-SNAPSHOT
  1. bundle:install -s mvn:com.demo.hello/mvn-hello-consumer/0.0.1-SNAPSHOT

执行结果:


源码下载

osgi实战学习之路:2. maven+maven-bundle-plugin+karaf搭建osgi之HelloWorld的更多相关文章

  1. osgi实战学习之路:4.Bundle

    </pre></h1><h1 style="margin:0 0 0 40px; border:none; padding:0px"><p ...

  2. osgi实战学习之路:3. osgi分层概念及相互合作demo

    源码下载 分层: modual: 主要作用于包级管理与共享代码 lifecycle: 主要作用于执行期间的模块管理与訪问osgi底层框架 service: 主要作用于多模块之间的相互通信 demo: ...

  3. osgi实战学习之路:8. Service-3之ServiceTracker

    通过ServiceTracker能够对查找的Service进行扩展 以下的demo引入装饰器模式对Service进行日志的扩展 demo: Provider student-manage/Activa ...

  4. osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo

    生命周期中关键3个类: BundleActivator 入口点,类似main方法 BundleContext Bundle上下文对象,在执行期间,为应用程序提供操作osgi框架的方法 Bundle 代 ...

  5. osgi实战学习之路:6. Service-1

    什么是Service? 它是注冊到osgi的一个java对象 Service注冊: 通过BundleContext::registerService(java.lang.String[] clazze ...

  6. osgi实战学习之路:1. ant+bnd+felix搭建osgi之HelloWorld

    开发环境分为三个部份 osgi_provider: bundle开发环境,对外提供服务 osgi_consumer: 引用其他bundle osgi_main: 执行測试 项目主要内容 : commo ...

  7. Spring Boot的学习之路(03):基础环境搭建,做好学习前的准备工作

    1. 前言 <论语·魏灵公>:"工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者." 工欲善其事必先利其器.我们在熟悉一个陌生项目的时候,首先会大概去看一 ...

  8. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  9. Maven - Maven3实战学习笔记(1)Maven使用入门

    1.maven安装 1>http://maven.apache.org/download.cgi下载apache-maven-3.6.1 2>解压缩安装包到指定的文件夹,如C:\fyliu ...

随机推荐

  1. day4 装饰器深入解析

    Python装饰器 装饰器是在不修改源码给代码添加功能的常用方法.@是装饰的标志.我们知道,在给代码增加功能的时候,要遵循开放封闭的原则,不能随便更改原码,因此装饰器的功能就显示出来了,只需要在函数前 ...

  2. WinPhone8 开发(一)[SDK安装+新建项目]

    微软 WinPhone8 开发 winphone8 SDK下载地址,见博客:http://blog.csdn.net/attagain/article/details/8509511 SDK安装界面: ...

  3. web_reg_save_param_regexp函数的用法

    关联从服务器返回的所有的内容: 本例通过一个使用HTTP/HTML协议发送.获取服务器数据的vuser脚本,分析LoadRunner如何进行HTTP关联. 下面这个例子包括两个事务:上传数据到服务器. ...

  4. Vsftpd支持SSL加密传输

    ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题   SSL(Secure Socket Layer)工作于传输层和应用程 ...

  5. maven的认识

    >>>>>>>>>> 安装完成后,设置为环境变量 命令行输入,如下图片就表明成功 >>>>>>>& ...

  6. 2017年浙江中医药大学大学生程序设计竞赛(重现赛)D - CC的神奇背包

    题目描述 cc最近收到了好多礼物,对着满地大小不一的礼物,她想要一个包来装,于是dd就掏出了一个会说话的神奇背包给cc装礼物.cc为了一次性装尽可能多的礼物,于是跟这个背包定下了一个规则,对每个礼物, ...

  7. python中if和elif的区别

    多个if语句是每次单独判断 比如: 例子一: a = 5 if a < 6: #条件1 print(1) if a < 7: #条件2 print(2) else: print(3) 条件 ...

  8. Hibernate 单项多对一的关联映射

    在日常开发中会出现很对多对一的情况,本文介绍hibernate中多对一的关联映射. 1.设计表结构 2.创建student对象 3.创建Grade对象 4.写hbm.xml文件 5.生成数据库表 生成 ...

  9. BZOJ 2938 [Poi2000]病毒(AC自动机)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2938 [题目大意] 给出一些病毒串,问是否存在不包含任何病毒串的无限长的字符串 [题解 ...

  10. 2017-2018-1 JAVA实验站 冲刺 day01

    2017-2018-1 JAVA实验站 冲刺 day01 各个成员在 Alpha 阶段认领的任务 小组成员 分工 任务量 张韵琪 写博客.后期市场推广,营销.打杂.各职能的配合 齐力锋 提供宣传用图. ...