1.背景
最近要将web项目模块化以支持热插拔、动态扩展等功能,因此我们开始研究如何将OSGi引入web项目。关于OSGi,大家可以参考OSGi研究 与总结。现在主流的j2EE框架都离不开Spring,因此,将OSGi与Spring进行无缝整合就成为了引入OSGi的关键。值得庆幸的 是,Spring早在08年就已对OSGi进行大力支持,并开发了子项目SpringDM与OSGi进行完美融合。但是,自从3.2版本之后,为了 Gradle,Spring摒弃OSGi(关于为什么摒弃OSGi,大家可以参考http://www.infoq.com/news/2012/10/spring-osgi-gradle),关于OSGi在J2EE中的应用,大家也有些争论,可谓是仁者见仁智者见智,说到底,还是对OSGi研究的不够深入,导致OSGi在项目中发挥不出关键作用以致成为累赘。
总之,没尝试过OSGi的人是没有发言权的,基于这样的背景,下面我们就来构建Spring Tools Suite(STS)+ Virgo 的开发环境,为我们接下来深入研究OSGi在Web项目中的应用打下坚实基础。
2.预备知识
在开始之前,先简单介绍一下涉及到的名词概念,了解OSGi以及Virgo的同学可以直接无视。
什么是OSGi?
简单的说,它是一套规范及标准,支持java语言模块化的系统。我们常用的Eclipse就是基于OSGi标准开发的。详情介绍http://developer.51cto.com/art/200909/152190.htm)
什么是STS?
基于Eclipse的一套IDE开发工具,简单说,就是Eclipse + STS插件。
什么是Virgo Tomcat Server?
就是将Tomcat进行包装,集成了OSGi环境的Server。详细介绍 http://www.ha97.com/5152.html。
什么是Maven?
这个就不多说了,google一下就清楚了。
3.环境搭建
好,我们正式开始搭建过程。
3.1步骤一:
下载STS开发环境,地址http://spring.io/tools/sts/all,只能下载最新版本,分为绿色解压版及安装版,下载解压版即可。当然,如果你也可以下载Spring Tool Suite的插件直接安装到你的Eclipse环境中,该插件大概有130M左右。
3.2步骤二:
下载Virgo Server,地址http://www.eclipse.org/virgo/download/,我们采用的是基于tomcat的。
3.3步骤三:
配置Virgo Server。
我们需要将下载的Virgo Server集成到STS环境中,首先,在STS IDE中安装virgo tools插件,通过Help->Install New Software,弹出如下界面。
在STS IDE中安装virgo tools,通过Help->Install New Software,弹出如下界面。
点击Add,输入
Name:virgo
Location:http://download.eclipse.org/virgo/milestone/tooling
勾选Eclipse Virgo Tools插件,然后Next进行下载及安装。
安装完成后重启STS。
然后,配置Server,也就是我们使用的virgo应用服务器。
点击Add,在弹出的配置界面中选择EclipseRT下面的Virgo Runtime。
选择EclipseRT下面的Virgo Runtime并勾选create a new local server。
填写Virgo Server的Name,点击Browser选择下载的Virgo Server的路径。
完成后,在Server视图中可以看到我们创建的VirgoServer,下面的VmwarevFabric tc Server是这个版本的STS环境自带的,不用管。
3.4步骤四:
配置Maven。(如果不清楚Maven是什么的同学可以去Google一下,此处是Maven下载的地址http://maven.apache.org/download.cgi)
重启之后选择windows->preferences->Maven对maven进行配置。
建议不要使用Embedded内嵌的Maven,《Maven实战》上说不太稳定,详见《Maven实战》第47页2.7.3。
最后,让我们测试一下搭建的环境,在STS中启动Virgo Server。
可以看到virgo
启动后就是加载各个osgi的插件
打开浏览器,输入http://localhost:8080/
得到默认的启动页面如下
点击右上角的Admin Console
输入用户名和密码:分别是admin、springsource
进行管理页面
好啦,大功告成,我们的STS+Virgo初步的环境就搭建好了,下一节我们将介绍如何将Snaps集成到Virgo Server上,并演示几个官方的小demo。