一,开发生产者:
工程名:org.vwpolo.osgi.service
声明接口:
package org.vwpolo.osgi.service.model;
public interface LoginService {
public void login(String name,String password);
}
实现:
package org.vwpolo.osgi.service.model.impl;
import org.vwpolo.osgi.service.model.LoginService;
public class LoginServiceImpl implements LoginService {
@Override
public void login(String name, String password) {
// TODO Auto-generated method stub
if("lxj".equals(name)&&password.equals("123")){
System.out.println("登录成功");
}else
System.out.println("Sorry,用户名或密码有错误码");
}
}
Mefest.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Service Plug-in
Bundle-SymbolicName: org.vwpolo.osgi.service
Bundle-Version: 1.0.0
Bundle-Activator: org.vwpolo.osgi.service.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Export-Package: org.vwpolo.osgi.service.model
Service-Component: OSGI-INF/component.xml
component.xml
<?xml version="1.0" encoding="UTF-8"?>
<component name="LoginService">
<implementation class="org.vwpolo.osgi.service.model.impl.LoginServiceImpl"/>
<service>
<provide interface="org.vwpolo.osgi.service.model.LoginService"/>
</service>
</component>
至此生产者已经建立完毕。
二消费者:
工程名:org.vwpolo.osgi.service.client
消费者:
package org.vwpolo.osgi.service.client;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.vwpolo.osgi.service.model.LoginService;
public class Activator implements BundleActivator {
private BundleContext context;
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
this.context=context;
ServiceReference serviceRef=context.getServiceReference(LoginService.class.getName());
LoginService loginService=(LoginService)context.getService(serviceRef);
loginService.login("lxj", "123");
System.out.println("OSGI框架已经成功启动了,一切运行正常");
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
}
}
Mefest.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Client Plug-in
Bundle-SymbolicName: org.vwpolo.osgi.service.client
Bundle-Version: 1.0.0
Bundle-Activator: org.vwpolo.osgi.service.client.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0",
org.vwpolo.osgi.service.model
运行,请看里面依赖的包,自已选了。。。。
不过只少要有ds,没有了,下载呀。。