OSGI开发的一点心得

摘要:
最近用OSGI+嵌入jetty做了一个IDE的后台管理,OSGI真是个好东西,即插即用。在这里选择引用文件夹,target编辑器将会从这些位置搜索插件,注意,它并不真正的产生效果,仅仅只是为了后面查找插件依赖服务的,相当于添加索引。在这个位置添加你要启动的插件,依赖性通过右边的“AddRequired”自动完成。equinox.jar是启动的jar包,equinox是eclipse基于OSGI框架的产品。

最近用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。

OSGI开发的一点心得第1张

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

OSGI开发的一点心得第2张

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

然后选择导出,即可。

OSGI开发的一点心得第3张

如何配置OSGI?

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

java -jar -Dorg.osgi.service.http.port=10000 equinox.jar -console10000为指定的端口。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,用逗号隔开,可以使用通配符

免责声明:文章转载自《OSGI开发的一点心得》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇企业信息安全工作的价值体现路在何方如何给小程序页面加载一张背景图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

浅谈ES6的Object.assign()浅拷贝

注意: 1、Object.assign() 只是一级属性复制,比浅拷贝多深拷贝了一层而已。用的时候,还是要注意这个问题的。 2、简单实现深拷贝的方法,当然,有一定限制,如下:JSON.parse(JSON.stringify());思路就是将一个对象转成json字符串,然后又将字符串转回对象。 Object.assign()方法 特点:浅拷贝、对象属性的合...

iptables使用总结

参考: 1、朱双印博客:https://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptables 2、https://blog.51cto.com/u_10630401/2089708 本篇文章内容基本来自于朱双印博客,这里只是把一些内容归纳在此,方便查...

Makefile 使用总结

1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的...

redhat7 升级openssh openssl

部署telnet,防止ssh启动失败  1、关闭防火墙或者开放23端口  2、安装启动服务,并开启root访问 yum install -y telnet-server.x86_64 yum install -y telnet.x86_64 yum install -y xinetd.x86_64 systemctl enable xinetd.ser...

spring cloud fegin 原理解析

一、 SpringCloud 中 Feign 核心原理 如果不了解 SpringCloud 中 Feign 核心原理,不会真正的了解 SpringCloud 的性能优化和配置优化,也就不可能做到真正掌握 SpringCloud。 本章从Feign 远程调用的重要组件开始,图文并茂的介绍 Feigh 远程调用的执行流程、Feign 本地 JDK Proxy...

spring5 源码深度解析----- AOP的使用及AOP自定义标签

我们知道在面向对象OOP编程存在一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为时,例如日志,安全检测等,我们只有在每个对象里引入公共行为,这样程序中就产生了大量的重复代码,所以有了面向对象编程的补充,面向切面编程(AOP),AOP所关注的方向是横向的,不同于OOP的纵向。接下来我们就详细分析下spring中的AOP。首先我们从动态AOP的使用...