久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

OpenCore:基于OSGi開發(fā)純插件體系結(jié)構(gòu)的WEB應(yīng)用程序

 ~水手~!! 2010-12-24
隨著OSGi/Equinox逐漸成為Java EE服務(wù)端的基礎(chǔ)軟件架構(gòu),OSGi上部署WEB應(yīng)用程序的解決方案日漸成熟。這里介紹三種目前我們所知的解決方案,,前兩種是Equinox組織提出的方案,后一種是OpenCore平臺(tái)采取的解決方案,。

解決方案一: 部署OSGi/Equinox在Servlet容器中

具體實(shí)現(xiàn): 把OSGi/equinox打包在WAR中,,當(dāng)Servlet容器加載WAR時(shí),啟動(dòng)OSGi框架,。
WEB-INF的目錄結(jié)構(gòu)大致如下(大致如此):
  1. * /WEB-INF  
  2.       o /web.xml (with one servlet entry assigning all incoming requests to the BridgeServlet)  
  3.       o /lib/servletbridge.jar (the classes associated with the equinox.servletbridge)  
  4.       o /eclipse (the eclipse platform directory)  
  5.             + launch.ini (contains framework properties that will allow override of any eclipse specific System Properties)  
  6.             + /configuration (contains config.ini which lists the bundles you want to have available)  
  7.             + /features  
  8.             + /plugins  

部署結(jié)構(gòu)如下圖(轉(zhuǎn)載):




個(gè)人感覺這個(gè)解決方案使用價(jià)值不大,。

解決方案二: Web服務(wù)器與Servlet容器嵌入在OSGi/Equinox

具體實(shí)現(xiàn): 把Jetty當(dāng)作一個(gè)插件嵌入到OSGi/Equinox中,并基于Jetty實(shí)現(xiàn)OSGi標(biāo)準(zhǔn)中的HTTP服務(wù),,其他插件可以通過該服務(wù)注冊Servlet和靜態(tài)頁面,。

OSGi標(biāo)準(zhǔn)中的HTTP服務(wù)接口如下:

 
  1. package org.osgi.service.http;  
  2.   
  3. import javax.servlet.Servlet;  
  4. import javax.servlet.ServletException;  
  5. import java.util.Dictionary;  
  6.   
  7. public interface HttpService {  
  8.     public void registerServlet(String alias, Servlet servlet,  
  9.             Dictionary initparams, HttpContext context)  
  10.             throws ServletException, NamespaceException;  
  11.   
  12.     public void registerResources(String alias, String name,  
  13.             HttpContext context) throws NamespaceException;  
  14.   
  15.     public void unregister(String alias);  
  16.   
  17.     public HttpContext createDefaultHttpContext();  
  18. }  


部署結(jié)構(gòu)圖(轉(zhuǎn)載):



因?yàn)镺SGi是最早為嵌入式系統(tǒng)設(shè)計(jì),所以O(shè)SGi標(biāo)準(zhǔn)中的HTTP服務(wù)只提供了有限的Servlet與靜態(tài)資源的發(fā)布功能,,沒有一個(gè)完整的WEB容器概念,,這種模式更適合通過WEB方式暴露(Export)服務(wù),不太適合開發(fā)展現(xiàn)層的WEB應(yīng)用,。

通過Equinox提供的擴(kuò)展/擴(kuò)展點(diǎn)功能可以簡化這種方式WEB應(yīng)用的開發(fā),,就是通過plugin.xml來配置Servlet和靜態(tài)頁面的注冊。

解決方案三: 設(shè)計(jì)適合OSGi環(huán)境的Servlet容器,,構(gòu)建純插件體系結(jié)構(gòu)的WEB層

具體實(shí)現(xiàn):"插件"與我們通常所說軟件"模塊"的一個(gè)區(qū)別是:插件能自我描述,,加載運(yùn)行在插件容器中。那么,,我們可以分層擴(kuò)展一個(gè)插件的自我描述,,用類似Decorator的模式為插件增加“特征”描述。 所以,,我們在OpenCore中定義了三種特征的插件,,如下圖:



這三種插件類型間關(guān)系類似Decorator模式,從內(nèi)到外增加"特征"描述:
  1. OSGi標(biāo)準(zhǔn)插件,,自描述文件"META-INF/MANIFEST.MF"
  2. OpenCore插件,,增加自描述文件"META-INF/opencore.xml",實(shí)現(xiàn)符合OSGi環(huán)境的依賴注冊(IoC)與動(dòng)態(tài)擴(kuò)展點(diǎn)
  3. OpenCore Web插件,,增加自描述文件"WEB-INF/web.xml"(符合Servlet規(guī)范),,WEB特性的插件,可以部署在Servlet容器內(nèi)

這樣我們可以把一個(gè)應(yīng)用的WEB層像業(yè)務(wù)層一樣,,分割為多個(gè)插件,,部署在OSGi/Equinox的框架中.

部署結(jié)構(gòu)圖:






我 們覺得這種方式以合適的力度將WEB層分割為插件部署在OSGi框架上,充分的發(fā)揮了OSGi體系結(jié)構(gòu)的強(qiáng)大之處,,也提高了WEB層開發(fā)部署的靈活性,。目 前,,業(yè)界好像也有很多項(xiàng)目是采用這中方式部署。這種部署方式的缺點(diǎn)是,,不得不修改Jetty容器的實(shí)現(xiàn),,以使其適應(yīng)OSGi的環(huán)境,我們希望Jetty以 后能支持這個(gè)功能:)

Google Code上發(fā)布了一個(gè)基于OpenCore的示例項(xiàng)目linktalk,,一個(gè)基于GWT,、Equinox、OpenCore的Ajax聊天室,。

項(xiàng)目地址: http://code.google.com/p/lintkalk

源碼下載: svn checkout https://linktalk./svn/trunk/project

程序下載: svn checkout https://linktalk./svn/trunk/release

相關(guān)資源:

http://www./equinox/server/http_quickstart.php

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多