OSGI web 开发

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

首先我的eclipse版本是4.4.2 LUNA

OSGI web 开发_第1张图片


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

OSGI web 开发_第2张图片


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

一路next下来:

OSGI web 开发_第3张图片

OSGI web 开发_第4张图片

OSGI web 开发_第5张图片

OSGI web 开发_第6张图片

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

OSGI web 开发_第7张图片



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


OSGI web 开发_第8张图片


点击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按钮在控制台看到:


OSGI web 开发_第9张图片

则bundle启动成功。

接下来进行web配置。

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

OSGI web 开发_第10张图片

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

OSGI web 开发_第11张图片


点击 Runtime 添加bin 如图所示:

OSGI web 开发_第12张图片


最后的配置为:

OSGI web 开发_第13张图片


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

OSGI web 开发_第14张图片


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

添加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


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



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

OSGI web 开发_第15张图片



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

OSGI web 开发_第16张图片

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



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


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

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




















你可能感兴趣的:(Java)