OSGI web 开发

来源:互联网 发布:淘宝网女士羊毛衣 编辑:程序博客网 时间:2024/05/16 08:12

最近在研究OSGI框架,想将服务发布成网路api,目前大概有4中osgi框架,本文用到的是Eclipse自带的equinox。简单实现一个osgi的web,关键参考网上的一路配置下来遇到了不少问题和错误。现在解决了,并且测试成功了,就想说一下,有想学习osgi的同学也能参考参考。

首先我的eclipse版本是4.4.2 LUNA



然后右键new 一个project 选择 Plug-in-project



填写项目名:org.osgi.test ,点击下一步,可以看到一些属性的设置可以为默认的,也可以自定义。本人都是默认的。

一路next下来:





ok,到处项目创建完毕,项目的工程图:




接下来:右键项目run as 选择 run configurations




点击OSGI Framework下的Equniox 如果没有则右键new一个。

选择自己刚刚新建的bundle在下面的Target platfoem勾选 org.eclipse.equinox.console   org.apache.felix.gogo.command   org.apache.felix.gogo.shell    org.apache.felix.gogo.runtime    org.eclipse.osgi  

然后点击 Run按钮在控制台看到:



则bundle启动成功。

接下来进行web配置。

在src下新建一个folder为webroot(习惯,可以随便设置)在下面新建一个html为test.html


接下来,双击打开MANIFEST.MF文件点击Dependeceis 分别在左右添加bundle和引入包如图所示:



点击 Runtime 添加bin 如图所示:



最后的配置为:



接下来打开自动生成的类修改里面的代码:



接下里再一次打开运行配置:

添加bundle依赖,这一次添加的比较多:

   org.eclipse.osgi_3.10.2.v20150203-1939
     javax.servlet_3.0.0.v201112011016
     org.eclipse.equinox.http.jetty_3.0.200.v20131021-1843
      org.eclipse.equinox.http.registry_1.1.300.v20130402-1529
      org.eclipse.equinox.http.servlet_1.1.500.v20140318-1755
     org.eclipse.osgi.services_3.4.0.v20140312-2051
     org.eclipse.equinox.console_1.1.0.v20140131-1639
     org.apache.felix.gogo.command_0.10.0.v201209301215
      org.apache.felix.gogo.shell_0.10.0.v201212101605
      org.apache.felix.gogo.runtime_0.10.0.v201209301036
     org.eclipse.jetty.http_8.1.16.v20140903
     org.eclipse.jetty.io_8.1.16.v20140903
     org.eclipse.jetty.util_8.1.16.v20140903
    org.eclipse.jetty.server_8.1.16.v20140903
     org.eclipse.jetty.continuation_8.1.16.v20140903
      org.eclipse.jetty.servlet_8.1.16.v20140903
    org.eclipse.jetty.xml_8.1.3.v20120522
    org.eclipse.jetty.security_8.1.16.v20140903
     org.eclipse.jetty.webapp_8.1.3.v20120522
      org.eclipse.equinox.common_3.6.200.v20130402-1505
      org.eclipse.equinox.registry_3.5.400.v20140428-1507

      osgi.example.compute_1.0.0.qualifier


如果添加过了就不用再添加了。其实上面的控制态都打印出来。



等等还要配置访问的端口,



ok,现在可以运行了,点击run按钮,然后在浏览器中访问吧:


如果你在代码中写的文件地址是webroot那么访问地址就为:/demo/test.html



总结:遇到错误看错误代码,他会报什么依赖的bundle错误,那我们家把什么bundle加进来。


参考了别人的文档,菜鸟一个。osgi的用途应该在发布服务面向接口的开发,阿里支付宝的sofamvc用的就是OSGI的原理发布服务。sofamvc3之前的都是bundle依赖

sofamvc4以后改成了module.并加入了注解实现发布。结合CE容器开发web系统。




















1 0
原创粉丝点击