@cyysu
2018-08-10T01:06:45.000000Z
字数 1843
阅读 919
- 时间:2017年8月31日
- 作者:chen yuan
- 邮箱:chenyuan@ypmingjiang.cn
- 描述:OSGI框架移植篇
- 版本:V2.0
嵌入式Linux
OSGi(Open Service Gateway Initiative)技术是Java动态化模块化系统的一系列规范。OSGi一方面指维护OSGi规范的OSGI官方联盟,另一方面指的是该组织维护的基于Java语言的服务(业务)规范。简单来说,OSGi可以认为是Java平台的模块层。
OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语,这些组件能够组装进一个应用和部署中。
链接:http://pan.baidu.com/s/1eRA2Kuu 密码:wbph
这里不打算介绍怎么建立工程,建立工程的教程在网上有很多,我这里主要讲一些可能你会遇到的问题。
1.
Q: Eclipse没有plugin in Project选项?
A: 可以参考这篇博客 http://blog.csdn.net/sidihuo/article/details/40747525
2.
Q: 启动OSGI Framework发现有很多错误?
A: 可以在Windows->Preferences->Plug-in Development->Target Platform 建立自己的平台
3.
Q: OSGI框架Eclipse的实现在哪里找到?
A: 在Eclipse的软件目录下的plugins中可以找到类似这个org.eclipse.osgi_3.3.2.R33x_v20080105.jar的jar文件
4.
Q: 不在Eclipse环境下运行OSGI框架?
A: 只需要在一个目录下建立如下目录
mj@DZ:~/桌面/DemoTest$ tree
.
├── configuration
│ └── config.ini
├── org.eclipse.osgi_3.4.0.v20080605-1900.jar
└── plugins
└── Demo_1.0.0.jar
Demo_1.0.0.jar文件是自己开发的Bundle,plugins文件夹就是存放Bundle的地方,在configuration中存放的是OSGI启动的配置文件,看到这个config.ini,大家有没有感觉很熟悉呢,对,他和我们的eclipse软件目录下的那个config.ini是同样的作用,eclipse这个软件的整体设计也是按照OSGI框架来设计的。下面我们来看一下config.ini里面的内容是什么。
mj@DZ:~/桌面/DemoTest/configuration$ cat config.ini
osgi.noshutdown=true
osgi.bundles.defaultStartLevel=4
osgi.bundles=reference\:file\:plugins/Demo_1.0.0.jar@1:start
如果采用我上面给出的软件来编写程序,那么可以省略第三个步骤,在建立工程时也不会存在一些报错信息,这个是笔者亲测的。
好了,话不说,开始我们的目标平台移植,这个就要借助我们上一篇的CVM移植篇的平台了,如果还没看,这里提供通道。
https://www.zybuluo.com/cyysu/note/864194
准备好了环境,那么将我们上面问答里面的文件scp到我们的开发板。执行过程如下。
[root@M3352 opt]# ls
bin/ configuration/ equinox.jar* lib/ plugins/
[root@M3352 opt]# ./bin/cvm -jar equinox.jar -console
osgi> hello osgi!!!
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.3.2.R33x_v20080105
1 ACTIVE Demo_1.0.0
osgi> stop 1
goobye osgi!!!
osgi> exit
[root@M3352 opt]#
移植工作到此就彻底结束了,剩下的工作为上层JAVA开始调用我们的底层C代码,这一部分的内容会放在JNI搭建篇进行讲述。如果本文存在什么不正之处,还请您指出,或者您有什么疑惑地方环境私信交流。