分层:


modual:

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

lifecycle:

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

service:

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

demo:


hello-provider/pom.xml



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:



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

參考演示样例

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





相关文章: