打造一個(gè)基于OSGi的Web Application——?jiǎng)訖C(jī)和目標(biāo)
OSGi技術(shù)發(fā)展至今也有好幾年了,然而除了在富客戶端應(yīng)用(以Eclipse為代表)和服務(wù)器應(yīng)用(如大多數(shù)的應(yīng)用服務(wù)器)方面大放光芒之外,在Web Application方面的應(yīng)用和資料卻少之又少。一方面,在OSGi規(guī)范中,對(duì)于Web應(yīng)用方面的規(guī)劃尚不成熟,即使在最新的4.2版中,也僅僅只有一個(gè)HttpService,這個(gè)簡(jiǎn)陋的service甚至不能覆蓋任何一個(gè)現(xiàn)有的Servlet規(guī)范;另一方面,各個(gè)OSGi實(shí)現(xiàn)廠商對(duì)HttpService的實(shí)現(xiàn)也是不完全的,在開(kāi)發(fā)實(shí)現(xiàn)一個(gè)常規(guī)的Web Application時(shí),這些實(shí)現(xiàn)也是完全不夠用的。本文章的目的,也就是為了探索OSGi在Web Application上的開(kāi)發(fā)之路該如何走,從我的視角提出一些看法,做一些嘗試,希望對(duì)大家有所幫助。
現(xiàn)在OSGi與Web Application的結(jié)合,大致有兩個(gè)方向:
現(xiàn)在OSGi與Web Application的結(jié)合,大致有兩個(gè)方向:
- OSGi包含Web Container:目前能完美嵌入OSGi的Web Container似乎只有jetty一個(gè),tomcat的catalina似乎有希望能成為第二個(gè)。我們完全不能指望Websphere和Weblogic能在短期內(nèi)具有能嵌入OSGi的能力,所以這個(gè)方向理所當(dāng)然的被我放棄了。
- Web Container包含OSGi:這個(gè)方面目前只有equinox的Servlet Bridge這么一個(gè)著名的實(shí)現(xiàn),equinox通過(guò)Servlet Bridge的方式來(lái)實(shí)現(xiàn)一個(gè)OSGi的HttpService服務(wù),這個(gè)服務(wù)目前能做的事情還非常有限,還不足以覆蓋Servlet規(guī)范。
- 基于OSGi的bundle和service。
- 適合絕大對(duì)數(shù)支持Servlet 2.4和Jsp 2.0規(guī)范的Web服務(wù)器。
- 適合現(xiàn)有的實(shí)現(xiàn)OSGi 4.2規(guī)范的OSGi Framework實(shí)現(xiàn):equinox、felix和knopflerfish。
- 支持大部分Servlet 2.4和Jsp 2.0規(guī)范中聲明的功能。
- 提供一個(gè)基于HttpService的服務(wù)實(shí)現(xiàn),以此來(lái)兼容其他使用HttpService的service。
posted on 2010-03-23 14:37 dbstar 閱讀(2372) 評(píng)論(1) 編輯 收藏 所屬分類: OSGi