Virgo与Maven整合开发环境搭建(四)
?????????????????????? 首先来看一下web.xml
????????????????????? 在这个demo中,我们使用的是Spring-MVC,所以,这里加入Spring-MVC支持.这里用到了一个自定义扩展类org.phantom.web.virgo.servlet.DispatcherServlet。说明一下这个类的作用。在OSGI中,每个bundle都是独立的,它拥有独立的ClassLoad,独立的Spring ApplicationContext.但是我们要通过spring从一个bundle中获取另一个bundle的服务,即我们需要这些applicationContext互相认识.怎么做到呢?virgo对这事做了支持.它提供了一个类org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext.这个类就相当于一个OSGI全局的applicationContext.我们这里就是要将这个类注入到Spring-MVC的DispatcherServlet中.这里通过扩展默认的DispatcherServlet来达到目的
???????????????????? 一句句解释一下.第一句,打开包扫描,将Controller加入到Spring管理中???????????????????? 接下来打开mvc的支持.将一些Spring-MVC默认的View、Convertor加入进来。
????????????????????? 这句就是通过Spring-DM获取一个OSGI服务的配置.这里我们只获取图片搜索的实现,MP3的我们留在后续章节,用来说明OSGI的动态性如何体现.
?????????????????????? 同样,我们与普通OSGI进行一下对比.在普通OSGI中,想要或者一个服务如何编写
???????????????????? 所有bundle开发完后,按照依赖关系,依次执行mvn install安装到本地maven仓库.之前已经配置了maven仓库与virgo关联.所以这种开发流程基本是:开发完—install—启动virgo.
???????????????????? 然后到${virgo_home}/pickup/新建一个plan,即一次部署计划.
????????????????????? 部署计划中只需要写实现包和web包,被依赖的包比如api不用写,Virgo会根据MANIFEST.MF中的依赖定义,在maven库中找到api并加载.
???????????????????? 做完这些后,启动virgo,访问http://localhost:8080/demo/search/index.html.
????????????????? 点击按钮,通过firebug查看请求和返回的数据
?
?