• 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。

         在这里选择引用文件夹,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,用逗号隔开,可以使用通配符

  • 相关阅读:
    jquery ajax 向后台传递数组
    定时任务
    C# 好用的插件
    C# 跳出循环
    存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectS
    Opencv2.4.9源码分析——HoughLinesP
    OpenCV+C++ 视频图片相互转换
    opencv2.2版本不稳定
    OpenCV 透视变换【图像归一化矫正】
    opencv配置注意事项【总结】
  • 原文地址:https://www.cnblogs.com/anrainie/p/2383939.html
Copyright © 2020-2023  润新知