-
创建一个新的
java project
,命名为ServiceProvider
-
在
com.freud.service
包下创建一个新的interface
,命名为HelloWorldService
- 在
com.freud.service.impl
包下创建一个新的java
类,命名为HelloWorldServiceImpl
- 在
src
下新建一个Folder
,命名为META-INF
,并在META-INF
下创建一个folder
命名为services
,一个文件命名为MANIFEST.MF
- 在
services
目录下创建一个文件命名为com.freud.service.HelloWorldService
其中的内容为:
-
将项目导出为
jar
到一个本地目录,命名为ServiceProvider.jar
-
新建一个
Java Project
,命名为ServiceConsumer
,并添加ServiceProvider.jar
为外部jar
依赖 -
在
com.freud.service.test
目录下添加一个测试类HelloWorldTest
- 执行测试类
总结 | 当Consumer类调用HelloWorldService的时候,并不需要去关注在Provider中的服务具体实现是什么,而是只需要去关注Service的接口就可以了,对接口的实现在Provider中。 |
缺点 | 实现类在打包发布之后,还是暴露给了Consumer,而这对Consumer来说,是完全没有用的东西。 |
参考资料
视频教程 : http://v.youku.com/v_show/id_XNDE1NzU0OTY0.html
Equinox OSGi官网 : http://www.eclipse.org/equinox/
林昊 : 《OSGi原理与最佳实践》
Richard S. Hall : 《OSGi实战》