OSGi技術發展至今也有好幾年了,然而除了在富客戶端應用(以Eclipse為代表)和服務器應用(如大多數的應用服務器)方面大放光芒之外,在Web Application方面的應用和資料卻少之又少。一方面,在OSGi規范中,對于Web應用方面的規劃尚不成熟,即使在最新的4.2版中,也僅僅只有一個HttpService,這個簡陋的service甚至不能覆蓋任何一個現有的Servlet規范;另一方面,各個OSGi實現廠商對HttpService的實現也是不完全的,在開發實現一個常規的Web Application時,這些實現也是完全不夠用的。本文章的目的,也就是為了探索OSGi在Web Application上的開發之路該如何走,從我的視角提出一些看法,做一些嘗試,希望對大家有所幫助。
現在OSGi與Web Application的結合,大致有兩個方向:
- OSGi包含Web Container:目前能完美嵌入OSGi的Web Container似乎只有jetty一個,tomcat的catalina似乎有希望能成為第二個。我們完全不能指望Websphere和Weblogic能在短期內具有能嵌入OSGi的能力,所以這個方向理所當然的被我放棄了。
- Web Container包含OSGi:這個方面目前只有equinox的Servlet Bridge這么一個著名的實現,equinox通過Servlet Bridge的方式來實現一個OSGi的HttpService服務,這個服務目前能做的事情還非常有限,還不足以覆蓋Servlet規范。
我的目標是構建一個OSGi與Web Application結合的方式,它要能滿足一下幾點需求:
- 基于OSGi的bundle和service。
- 適合絕大對數支持Servlet 2.4和Jsp 2.0規范的Web服務器。
- 適合現有的實現OSGi 4.2規范的OSGi Framework實現:equinox、felix和knopflerfish。
- 支持大部分Servlet 2.4和Jsp 2.0規范中聲明的功能。
- 提供一個基于HttpService的服務實現,以此來兼容其他使用HttpService的service。
毫無疑問,我將采用Web Container中包含OSGi的方式來實現,具體的內容將在以后陸續提供。