一、什么是OSGI
OSGi(Open Service Gateway Initiative)技术是Java动态化模块化系统的一系列规范。OSGi一方面指维护OSGi规范的OSGI官方联盟,另一方面指的是该组织维护的基于Java语言的服务(业务)规范。简单来说,OSGi可以认为是Java平台的模块层。
OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语,这些组件能够组装进一个应用和部署中。
上面只是简单的从百度C了一些介绍,只需要知道是一个新的框架就可以了,比以往用的框架都好用(个人觉得)。而且目前很多大公司都在用,小型的用的少,毕竟这个的成本高,入门门槛有点那啥,第一次有点懵逼。
二、开发前准备
开发工具:Eclipse + 开发环境(搞开发的就不用说了吧) + felix(我用的是5.4.0)
开发思维:OSGI是将传统的各个模块进行了更细致化的分离
felix:运行OSGI项目目前所用的容器(支持热插拔,好爽~~~)
Maven项目:使用过Maven项目吧,知道咋回事就行
三、构架一个OSGI框架的项目
3.1 先启动felix
cmd >>进入felix所在文件 >>java -jar bin/felix.jar 好啦,目前已成功启动felix,第一步搞定。
3.2 新建项目
新建一个Maven Project >> 选择QuickStart的方式就可以了,起名为:email-parnent
点击刚才新建的Maven项目,新建4个Maven Module(一个一个建),名字分别为:email-api、email-client、email139、email163
到这里,已经建好了1个Maven项目,4ge Module,这4个Module是email-parnent的子项目。
继续走吧,如果上面已经搞定了。
配置email-parnent项目的pom文件
a、在<Properties>标签中加入下面配置(执行我们的jdk版本)
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
b、加入一个依赖
<dependency><groupId>org.osgi</groupId><artifactId>org.osgi.core</artifactId>
<version>6.0.0</version></dependency>
c、继续配置
3.3 email-api(放接口的)
建了一个包路径:org.email.api
建一个接口:IEmailService
public void sendEmail(String dest,String title,String content);
下面,继续配置这个项目:
注意,下面这段文字 在所有的实现项目、client中都要用到;
<groupId>FirstOsgi</groupId>
<artifactId>email-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
好啦,我们的api搞定啦
3.4 email-139(email163同理、email-client配置、编码原理一样)
下面就直接贴图了
四、打包运行吧
直接编译父项目,email-parnent,生成了4个jar包,将这4个jar包 拷贝到 felix目录/bundle下,好啦,编码、包都已准备完成,下面直接用命令行部署吧。
输入 lb :查看当前运行的包及id
stop 0 :停止根目录,(felix容器停止了)
重新启动即可:java -jar bin/felix.jar,会自动将bundle目录下的jar包进行编译,至此,我们的OSGI项目就OK啦。
小结:第一次写博客,写的不是很详细,会越来越好的。