gembin

OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

HBase, Hadoop, ZooKeeper, Cassandra

Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

About Me

 

equinox环境下web应用资源的部署

在osgi的equinox实现环境下,web服务器和web应用都是以osgi的bundle的形式部署到equinox环境中的。

在equinox下部署web服务器的资源与非equinox(osgi)环境下有一些不同,这为使用Spring+Struts+Hibernate的应用向equinox环境转移带来了一定的困难。而在spring中使用acegi的应用的转换麻烦要更多一些。


equinox环境自带了jetty作为默认的web服务器。


OSGi 中在org.osgi.service.http.HttpService接口中提供向web服务器部署资源的两个方 法:registerServlet(...)和registerResources(...),为了看得清晰省略了两个方法中的形参列表。从这两个方法 的命名上可以看出,equinox实现了HttpService接口的类,可以提供两种类型资源的部署(或者说注册),一种是静态资源Resources 对应registerResources(...)方法;另一种是动态资源Servlet对应registerServlet(...)。


1、注册静态资源


registerResources(String alias, String name, HttpContext context)



静态的资源是以文件形式存在的、能被web服务程序以文件流的形式读取的内容。比如,html,image,css,javascript,properties等静态的文件。


2、注册动态资源


registerServlet(String alias, Servlet servlet, Dictionary initparams, HttpContext context)


其他非静态资源都以servlet的形式部署(注册)。比如,serlvet,filter,listener等。


equinox提供了几个servlet的适配器(adaptor),以满足需要初始参数的servlet、需要contextPath的servlet以及Listener和Filter的注册需要。



由 于web服务器--jetty和web应用是分别处在不同的bundle中,每个bundle都是由独立的classLoader来加载资源的,所以,即 使在web应用的bundle内通过Spring将servlet、fitler、listener加载,对于web服务器--jetty的bundle 来说也是不可见的。必须使用registerServlet进行部署才能让jetty识别servlet、listener和filter。


在 jetty的资源部署时,一个URL的相对路径只能用一次。如果有两个servlet或者资源对应一个URL的相对路径就会出错。Filter也存在同样 的问题。用FilterServletAdaptor可以将一个servlet和Filter串接起来,在servlet之前先执行filter,然后 servlet再处理。但是多个Filter的串接还未能实现。这个filter的串接在acegi中是要使用的。


Acegi 是通过FilterToBeanProxy将Servlet容器和Spring容器结合起来。FilterToBeanProxy将拦截的请求通过 filterChainProxy发给一串filter处理。在非OSGi的环境中,由于是一个jvm环境,web服务器可以识别并使用由spring载 入的filter链,而在equinox环境中web服务器--jetty无法使用另一个bundle中未经过registerServlet注册的任何 servlet和filter。

posted on 2008-05-05 10:55 gembin 阅读(623) 评论(0)  编辑  收藏 所属分类: OSGi


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(6)

随笔分类(440)

随笔档案(378)

文章档案(6)

新闻档案(1)

相册

收藏夹(9)

Adobe

Android

AS3

Blog-Links

Build

Design Pattern

Eclipse

Favorite Links

Flickr

Game Dev

HBase

Identity Management

IT resources

JEE

Language

OpenID

OSGi

SOA

Version Control

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

free counters