OSGI开发的一点心得

简介: 最近用OSGI+嵌入jetty做了一个IDE的后台管理,OSGI真是个好东西,即插即用。 现总结一下初学时候遇到的问题。 1、启动WEB服务        需要加载6个插件(org.eclipse.

最近用OSGI+嵌入jetty做了一个IDE的后台管理,OSGI真是个好东西,即插即用。

现总结一下初学时候遇到的问题。

1、启动WEB服务

       需要加载6个插件(org.eclipse.osgi是默认一定要加载的插件,不计入其中):

       javax.servlet

       org.apache.commons.logging

       org.eclipse.equinox.http

       org.eclipse.equinox.http.servlet

       org.eclipse.osgi.services

       org.mortbay.jetty

 

2、导出\配置\启动OSGI遇到的问题:

如何导出OSGI?

首先是打包,可以自己手动来,找到OSGI需要的全部插件,然后打包,也可以选择maven2等插件来帮助打包并解决依赖性问题,目前为了保持干净的工作空间,我没有安装任何其他的插件,但又有数百个插件是要打包的,这种情况下,推荐如下方式:

a、新建一个target difinition项目,该项目用来保存各种版本的压缩文件

b、在该项目下新建一个.target文件,该target使用方式是一目了然的,Eclipse提供了target editor。

 

     在这里选择引用文件夹,target编辑器将会从这些位置搜索插件,注意,它并不真正的产生效果,仅仅只是为了后面查找插件依赖服务的,相当于添加索引。

      

     在这个位置添加你要启动的插件,依赖性通过右边的“Add Required”自动完成。注意:该editor的功能并不完善,它只是原样的导出你的选择,所以如果是你自己写的插件,请之后再手动export,不然只有src没有bin,当然你可以通过配置build选项,给bin文件夹打钩来解决(我的下步工作会是写个新的构建器,使之能给自定义插件打jar包),然后,add required也会导入很多多余的插件,如ui包等。

    然后选择导出,即可。

     

 

如何配置OSGI?

你需要一个start.bat,内容参考插件configuration的argument

如 

java -jar -Dorg.osgi.service.http.port=10000 equinox.jar -console 10000为指定的端口。 equinox.jar是启动的jar包,equinox是eclipse基于OSGI框架的产品。该jar包可以在eclipse的plugins目录找到。复制,放在根目录下。创建一个configuration文件夹,里面有config.ini配置文件。内容如下: #This configuration file was written by: #org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser 
#Thu Dec 22 15:48:36 CST 2011 
#org.eclipse.update.reconcile=false 
#osgi.instance.area.default=@user.home/workspace 
#osgi.framework=plugins/org.eclipse.osgi_3.7.0.v20110613.jar 
#equinox.use.ds=true 
osgi.noShutdown=true 
eclipse.ignoreApp=true 
#org.osgi.framework.bootdelegation=* 
osgi.bundles=reference\:file\:plugins/javax.servlet_2.5.0.v201103041518.jar@\:start,\ 
reference\:file\:plugins/org.apache.commons.logging_1.0.4.v201101211617.jar@\:start,\ 
reference\:file\:plugins/org.eclipse.equinox.http.jetty_2.0.100.v20110502.jar@\:start,\ 
reference\:file\:plugins/org.eclipse.equinox.http.servlet_1.1.200.v20110502.jar@\:start,\ 
reference\:file\:plugins/org.mortbay.jetty.util_6.1.23.v201012071420.jar@\:start,\ 
reference\:file\:plugins/org.mortbay.jetty.server_6.1.23.v201012071420.jar@\:start,\ 
reference\:file\:plugins/org.eclipse.osgi.services_3.3.0.v20110513.jar@\:start 


osgi.bundles.defaultStartLevel=4嗯,以上属性……参考字面意思。注意插件的加载级别即可。  如何启动OSGI?双击start.bat…… 

遇到的ClassNotFoundException问题

       有可能是因为config.ini中的org.osgi.framework.bootdelegation没有配置好

       org.osgi.framework.bootdelegation=* 即可

       当然也可以指定package,用逗号隔开,可以使用通配符

目录
相关文章
|
编译器 Linux C++
【C++ 跨平台开发 】掌握 C++ 跨平台关键宏的使用
【C++ 跨平台开发 】掌握 C++ 跨平台关键宏的使用
278 3
|
数据处理 C语言
深入解析x86架构:X86, X86_32和X86_64的差异与应用
深入解析x86架构:X86, X86_32和X86_64的差异与应用
|
12月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
2110 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
Java Linux Arthas
linux上如何排查JVM内存过高?
linux上如何排查JVM内存过高?
1227 0
|
算法 安全 Android开发
新一代安卓系统:技术演进与用户体验革新
在移动操作系统领域,安卓系统一直处于不断演进的过程中。本文探讨了新一代安卓系统的技术创新,以及这些创新如何为用户带来全新的体验和功能。
321 0
|
运维 测试技术 数据库
TestCase与TransactionTestCase的区别
TestCase与TransactionTestCase的区别
118 0
|
IDE API 开发工具
阿里 & 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
经历近 3 年时间,在阿里集团及蚂蚁集团共建小组的努力下,OpenSumi 作为国内首个强定制性、高性能,兼容 VS Code 插件体系的 IDE 研发框架,今天正式对外开源。
阿里 & 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
|
算法 计算机视觉
【双目视觉】 立体匹配算法原理之“代价空间与聚合、视差计算”
【双目视觉】 立体匹配算法原理之“代价空间与聚合、视差计算”
399 0
|
JavaScript 前端开发 安全
最强开源低代码平台 - Appsmith 功能介绍与使用体验
Appsmith 成立于 2019 年,是一款开源低代码框架。这两年发展迅猛,是现在 GitHub 上最火的低代码开发平台(18k star)。
3537 0
最强开源低代码平台 - Appsmith 功能介绍与使用体验
|
Java Linux 程序员
全网首发:LINUX上编译ARM(AARCH)版本的OpenJDK8
全网首发:LINUX上编译ARM(AARCH)版本的OpenJDK8
925 0