打造一個基于OSGi的Web Application——在OSGi容器中管理Web元素的實(shí)現(xiàn)思路
要在OSGi容器中動態(tài)的管理Web相關(guān)的元素,目前有兩種方式。
一種是通過類似于bridge的方式,現(xiàn)在外層的Web Application中配置一個對應(yīng)的元素,然后通過對這個元素將外部的訪問橋接到OSGi容器內(nèi)部。在OSGi容器內(nèi)部,會有一個總控的service,通過這個service來提供Web元素的動態(tài)管理,以及對外界請求的響應(yīng)和分發(fā)。Equinox的Servlet Bridge就是采用的這種方式。
另一種方式就是通過使用Web Container提供的原生的API來實(shí)現(xiàn)Web元素的動態(tài)管理,將Web Container的部分功能作為Service注冊到OSGi中,然后在OSGi中通過這個Service來動態(tài)的管理Web元素。
兩種方式各有利弊:
對于bridge方式來說,優(yōu)點(diǎn)是與Web Container實(shí)現(xiàn)無關(guān),在多種Web Container中均能正常使用;缺點(diǎn)也很明顯,無法使用Web Container提供的各種特性,并且相當(dāng)于自己要實(shí)現(xiàn)一部分Web Server的功能,不僅是重復(fù)造輪子,而且還是個不怎么好的輪子,能否滿足企業(yè)級應(yīng)用的需求,還只是個未知數(shù)。
對于使用原生API的方式來說,優(yōu)點(diǎn)就是完全使用Web Server自身的機(jī)制,可以保證性能和功能需求;缺點(diǎn)同樣也很明顯,現(xiàn)在流行的Web Server開源的并不多,而且就算是開源的,也不一定提供了可以動態(tài)管理Web元素的API,就算是有相應(yīng)的API,也不一定適合OSGi環(huán)境,而且同一個Web Server的不同版本,API也很有可能會變化,這直接導(dǎo)致了原生方式實(shí)現(xiàn)的多樣性和不兼容性。
幸運(yùn)的是,在Tomcat 5.5.x和6.0.x中都提供了這樣的API,在以后的章節(jié)中,我會著重針對Tomcat 5.5.x、6.0.x版本以及對bridge方式這三個場景,來實(shí)現(xiàn)對Web元素的動態(tài)管理。
Servlet 2.4中描述了如下可以在web.xml中配置的元素,這也是我要實(shí)現(xiàn)動態(tài)管理的目標(biāo):
一種是通過類似于bridge的方式,現(xiàn)在外層的Web Application中配置一個對應(yīng)的元素,然后通過對這個元素將外部的訪問橋接到OSGi容器內(nèi)部。在OSGi容器內(nèi)部,會有一個總控的service,通過這個service來提供Web元素的動態(tài)管理,以及對外界請求的響應(yīng)和分發(fā)。Equinox的Servlet Bridge就是采用的這種方式。
另一種方式就是通過使用Web Container提供的原生的API來實(shí)現(xiàn)Web元素的動態(tài)管理,將Web Container的部分功能作為Service注冊到OSGi中,然后在OSGi中通過這個Service來動態(tài)的管理Web元素。
兩種方式各有利弊:
對于bridge方式來說,優(yōu)點(diǎn)是與Web Container實(shí)現(xiàn)無關(guān),在多種Web Container中均能正常使用;缺點(diǎn)也很明顯,無法使用Web Container提供的各種特性,并且相當(dāng)于自己要實(shí)現(xiàn)一部分Web Server的功能,不僅是重復(fù)造輪子,而且還是個不怎么好的輪子,能否滿足企業(yè)級應(yīng)用的需求,還只是個未知數(shù)。
對于使用原生API的方式來說,優(yōu)點(diǎn)就是完全使用Web Server自身的機(jī)制,可以保證性能和功能需求;缺點(diǎn)同樣也很明顯,現(xiàn)在流行的Web Server開源的并不多,而且就算是開源的,也不一定提供了可以動態(tài)管理Web元素的API,就算是有相應(yīng)的API,也不一定適合OSGi環(huán)境,而且同一個Web Server的不同版本,API也很有可能會變化,這直接導(dǎo)致了原生方式實(shí)現(xiàn)的多樣性和不兼容性。
幸運(yùn)的是,在Tomcat 5.5.x和6.0.x中都提供了這樣的API,在以后的章節(jié)中,我會著重針對Tomcat 5.5.x、6.0.x版本以及對bridge方式這三個場景,來實(shí)現(xiàn)對Web元素的動態(tài)管理。
Servlet 2.4中描述了如下可以在web.xml中配置的元素,這也是我要實(shí)現(xiàn)動態(tài)管理的目標(biāo):
- Context Parameter
- Error Page
- Filter
- Filter Mapping
- Listener
- Security role
- Servlet
- Servlet Mapping
- Welcome Page
posted on 2010-03-25 17:34 dbstar 閱讀(2218) 評論(0) 編輯 收藏 所屬分類: OSGi