博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
osgi实战学习之路:3. osgi分层概念及相互合作demo
阅读量:5739 次
发布时间:2019-06-18

本文共 3621 字,大约阅读时间需要 12 分钟。

分层:

modual:

主要作用于包级管理与共享代码

lifecycle:

主要作用于执行期间的模块管理与訪问osgi底层框架

service:

主要作用于多模块之间的相互通信

demo:

hello-provider/pom.xml

xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.demo</groupId> <artifactId>pom</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>hello-provider</artifactId> <packaging>bundle</packaging> <name>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> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.core</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <configuration> <instructions> <Export-Package>org.hello.provider</Export-Package> <Import-Package>org.osgi.framework</Import-Package> <Bundle-Activator>org.hello.provider.impl.UserServiceActivator</Bundle-Activator> <Private-Package>org.hello.*</Private-Package> </instructions> </configuration> </plugin> </plugins> </build> </project>

hello-provider/BundleActivator:

package org.hello.provider.impl;import org.hello.provider.IUserService;import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;public class UserServiceActivator implements BundleActivator {	public void start(BundleContext context) throws Exception {		System.out.println("registerService......");		context.registerService(IUserService.class.getName(), 				new UserService(), null);	}	public void stop(BundleContext context) throws Exception {	}}

hello-client/pom.xml:

4.0.0
com.demo
pom
0.0.1-SNAPSHOT
hello-client
bundle
hello-client
http://maven.apache.org
UTF-8
junit
junit
org.osgi
org.osgi.core
com.demo
hello-provider
org.apache.felix
maven-bundle-plugin
true
org.hello.provider, org.osgi.framework
org.hello.client.Client
com.demo.hello.*

hello-client/BundleActivator:

package org.hello.client;import org.hello.provider.IUserService;import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;import org.osgi.framework.ServiceReference;public class Client implements BundleActivator {	public void start(BundleContext context) throws Exception {		ServiceReference 		   reference=context.getServiceReference(IUserService.class.getName());			System.out.println(((IUserService)context.getService(reference)).add());	}	public void stop(BundleContext context) throws Exception {	}}

将bundle安装到本地仓库且部署到karaf(參考前一篇)

启动bundle

通过下面命令查看bundle的id

list

通过下面命令,启动bundle

bundle:start 78
參考演示样例

你可能感兴趣的文章
多页架构的前后端分离方案(webpack+express)
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>
SRE工程师到底是做什么的?
查看>>
解读:Red Hat为什么收购Ansible
查看>>
PHP json_encode() 函数介绍
查看>>
js动态设置元素高度
查看>>
Ossim下的安全合规管理
查看>>
DelphiWebMVC框架下BPL热部署实现
查看>>
C++与MySQL的冲突
查看>>
siki学习之观察者模式笔记
查看>>
PYQT窗口可视化编程
查看>>
单元测试
查看>>
spring.net 继承
查看>>
ES6:模块简单解释
查看>>
JavaScript indexOf() 方法
查看>>
用Bootstrap写一份简历
查看>>
ZJU PAT 1023
查看>>
WMI远程访问问题解决方法
查看>>