osgi实战学习之路:2. maven+maven-bundle-plugin+karaf搭建osgi之HelloWorld
环境准备:
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
package com.demo.hello; public class Hello {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Hello() {
this.name="jack";
}
public void sayHi(){
System.out.println("hi:\t"+this.name);
} }
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.demo.hello</groupId>
<artifactId>mvn-hello-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging> <name>mvn-hello-provider</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>4.2.0</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>com.demo.hello</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
执行命令:
mvn clean install
安装 mvn-hello-consumer 到本地仓库
HelloClientActivator.java
package com.demo.hello.activator; import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext; import com.demo.hello.Hello; public class HelloClientActivator implements BundleActivator{
Hello hello;
public void start(BundleContext context) throws Exception {
hello=new Hello();
hello.sayHi();
} public void stop(BundleContext context) throws Exception {
hello=null;
} }
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.demo.hello</groupId>
<artifactId>mvn-hello-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging> <name>mvn-hello-consumer</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>com.demo.hello</groupId>
<artifactId>mvn-hello-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>com.demo.hello.client</Export-Package>
<Private-Package>com.demo.hello.*</Private-Package>
<Import-Package>com.demo.hello,
org.osgi.framework
</Import-Package>
<Bundle-Activator>com.demo.hello.activator.HelloClientActivator</Bundle-Activator>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>执行命令:
mvn clean install
部署bundle到karaf
注意部署顺序
先部署,mvn-hello-provider,再mvn-hello-consumer
在karaf命令行中执行命令:
bundle:install -s mvn:com.demo.hello/mvn-hello-provider/0.0.1-SNAPSHOTbundle:install -s mvn:com.demo.hello/mvn-hello-consumer/0.0.1-SNAPSHOT执行结果:
源码下载
osgi实战学习之路:2. maven+maven-bundle-plugin+karaf搭建osgi之HelloWorld的更多相关文章
- osgi实战学习之路:4.Bundle
</pre></h1><h1 style="margin:0 0 0 40px; border:none; padding:0px"><p ...
- osgi实战学习之路:3. osgi分层概念及相互合作demo
源码下载 分层: modual: 主要作用于包级管理与共享代码 lifecycle: 主要作用于执行期间的模块管理与訪问osgi底层框架 service: 主要作用于多模块之间的相互通信 demo: ...
- osgi实战学习之路:8. Service-3之ServiceTracker
通过ServiceTracker能够对查找的Service进行扩展 以下的demo引入装饰器模式对Service进行日志的扩展 demo: Provider student-manage/Activa ...
- osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo
生命周期中关键3个类: BundleActivator 入口点,类似main方法 BundleContext Bundle上下文对象,在执行期间,为应用程序提供操作osgi框架的方法 Bundle 代 ...
- osgi实战学习之路:6. Service-1
什么是Service? 它是注冊到osgi的一个java对象 Service注冊: 通过BundleContext::registerService(java.lang.String[] clazze ...
- osgi实战学习之路:1. ant+bnd+felix搭建osgi之HelloWorld
开发环境分为三个部份 osgi_provider: bundle开发环境,对外提供服务 osgi_consumer: 引用其他bundle osgi_main: 执行測试 项目主要内容 : commo ...
- Spring Boot的学习之路(03):基础环境搭建,做好学习前的准备工作
1. 前言 <论语·魏灵公>:"工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者." 工欲善其事必先利其器.我们在熟悉一个陌生项目的时候,首先会大概去看一 ...
- Android开发学习之路--MAC下Android Studio开发环境搭建
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
- Maven - Maven3实战学习笔记(1)Maven使用入门
1.maven安装 1>http://maven.apache.org/download.cgi下载apache-maven-3.6.1 2>解压缩安装包到指定的文件夹,如C:\fyliu ...
随机推荐
- Logistic回归与梯度上升算法
原创作品出处 原始出处 .作者信息和本声明.否则将追究法律责任.http://sbp810050504.blog.51cto.com/2799422/1608064 Logistic回归与梯度上升算法 ...
- Windows 10家庭版远程桌面连接错误
由于需要操作远程服务器,经常使用“远程桌面连接”工具,一直很正常.今天突然提示 出现身份验证错误,可能是由于 CredSSP加密Oracle修正.什么情况!! 根据提示的地址https://go.mi ...
- Python基本语法[二]
Python基本语法 1.定义变量: 代码正文: x= y= z=x+y 代码讲解: 2.判断语句: 代码正文: score= : print("你真棒") print(&qu ...
- CentOS7 logstash配置部署
(1)logstash介绍 `Logstash是一个开源的数据收集引擎,可以水平伸缩,而且logstash是整个ELK当中拥有最多插件的一个组件,其可以接收来自不同源的数据并统一输入到指定的且可以是不 ...
- JOYOI 西瓜种植 [差分约束系统]
题目传送门 西瓜种植 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 笨笨:小西瓜,小西瓜~路人甲:不会呀,这西瓜明明就大着啊…… ...
- JavaScript三种数据类型之间的互转
一:number<===>string 数字类型和字符串类型之间的互相转换 number===>string 数字转字符串有三种方式: 1.在数字后面 +“ ”; 2.利用字符串的 ...
- FastReport.Net使用:[4]分组
1.绘制报表标题和栏首. 2.设置报表栏,为数据区添加一个分组 3.右键分组页眉,在其右键菜单中选择“编辑”,显示分组编辑对话框. 设置分组条件,可直接通过下拉菜单选择Table表中的[学号]列:也能 ...
- Linux安装apache服务
1.通过yum包下载安装httpd yum -y install httpd*(等待安装) 到下面就安装完毕 2.启动apache服务 service httpd restart 3.现在就可以查看a ...
- HDU 6194【后缀数组】
题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=6194] 题意: 给你一个长度不大于1e5的字符串,然后然你判断其子串严格出现k次的子串个数. 题解: ...
- 【BZOJ 3812】 3812: 主旋律 (容斥原理**)
3812: 主旋律 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 235 Solved: 196 Description 响应主旋律的号召,大家决定 ...