Learning—Spring DM与WARs Bundles

因为暑假大作业的项目是一个WEB应用,所以前台显示的部分必须做成一个格式为WAR的bundle。而Spring DM为此提供了很好的WEB支持。

Spring DM全称是Spring Dynamic Modules,目前的版本是1.2.0,它根本上就是集成了Spring Framework与OSGi Service Platform,使得Spring应用能部署在OSGi执行环境中,并且利用其提供的服务,同时Spring DM也使得编写OSGi应用更加简单,关于Spring DM的更多相关信息,请访问http://www.springsource.org/osgi

在这里,我只关注Spring DM提供的WEB支持。

WAR,Web ARchives,是用于打包WEB应用程序的。在OSGi里面运行web application最大的问题是资源与类的加载,因为在一个WEB应用程序里面,是没有所谓的bundle space和imported packages的。每一个web container都有它自己的类加载机制与类路径假设,而这个是与OSGi相冲突的,而Spring DM通过将二者bridge起来,解决了这些问题,总而言之,通过Spring DM,任何web container支持的特性在OSGi WAR bundle里面都是可以使用的。

目前,Spring DM支持Apach Tomcat 5.5.x/6.0.x和Jetty 6.1.8+/6.2.x(其他的也很容易支持),JDK版本不低于1.4。

与非WAR bundle一样,OSGi使用extender pattern来检测和安装WARs,但是与标准的extender不同的是,它只触发WAR-Bundle的install与uninstall,而实际的工作交由web container来完成。为了使用这个特性,需要安装:spring-osgi-web.jar与spring-osgi-web-extender.jar

这两个bundle是用来检测开始的WAR bundle的,以及将其部署到web container中,如果一个工程名以.war结尾,并且有一个WEB-INF文件夹,那么将会被识别成一个WAR bundle。

接下来,就开始搭建一个支持WEB开发的Platform:

采用MyEclipse 6.5.0 GA。首先需要安装Spring IDE OSGi extension,通过Update Manager来安装,update site是http://www.springide.org/updatesite_nightly,当出现如下画面时:

image

选择Spring IDE OSGi extension,当然required是必须要安装的,如果这里出现依赖错误,那么就要解决这个错误方可继续进行安装,最后重启MyEclipse即可。

安装好后,选择target platform为Spring Dynamic Modules for OSGi(tm) Service Platforms 1.1.2,为了测试一下我们的Platform,我们新建一个OSGi Framework配置:

image

只勾选Target Platform,然后运行,得到如下结果(键入ss命令):

image

里面除了56是众知的issue外,其余bundle均是正常状态。

配置好Platform之后,加入tomcat相关的bundle,相关bundle的下载请参考http://www.springsource.com/repository/app/。注意,这里需要一个额外的Spring DM提供的bundle:catalina.start.osgi-1.0.0.jar。

然后看一下运行结果(部分截图):

image 

没有出现问题(关注87)。然后再根据各自应用需要的不同的包,下载相应的bundle,如果有现成的bundle,尽量不要自己创建bundle,例如,如果我需要jsp相关和commons.codec相关的bundle,我就下载相应的bundle放在Platform里面。

根据上面所说的,需要spring-osgi-web.jar与spring-osgi-web-extender.jar这两个bundle,同时为了与org.springframework.osgi.core的版本保持一致,我下载版本为1.1.2B的bundle,此时运行出现:

image

是处于INSTALLED的状态,说明出现了错误。键入start 93命令:

image

 

 

可以看出是有Import-Package未找到,从而就需要下载相应的bundle,来消除这个错误。

解决所有错误后,tomcat还需要两个配置文件才能正常启动,所以利用上一篇日志里面的方法,新建两个Fragment Bundle,将web.xml与server.xml分别放到这两个Fragment Bundle里面,一并启动,出现如下界面说明配置成功:

image

其实,要出现这个结果,需要勾掉com.springsource.slf4j.jcl (1.5.6),但是不知道为什么必须这么做,我也是摸索出来的,如果哪位知道原因,请留言供大家分享,不甚感激。

至此,一个WEB开发Platform就搭建好了,此时,我们可以开始动手写任何我们想要的WEB应用程序了。

错误之处,在所难免,不吝赐教。

Best Regards

胡靖飞

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值