亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

OpenCore:基于OSGi開發純插件體系結構的WEB應用

系統 1887 0
隨著OSGi/Equinox逐漸成為Java EE服務端的基礎軟件架構,OSGi上部署WEB應用程序的解決方案日漸成熟。這里介紹三種目前我們所知的解決方案,前兩種是Equinox組織提出的方案,后一種是OpenCore平臺采取的解決方案。

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

具體實現: 把OSGi/equinox打包在WAR中,當Servlet容器加載WAR時,啟動OSGi框架。
WEB-INF的目錄結構大致如下(大致如此):
  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??

部署結構如下圖( 轉載 ):




個人感覺這個解決方案使用價值不大。

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

具體實現: 把Jetty當作一個插件嵌入到OSGi/Equinox中,并基于Jetty實現OSGi標準中的HTTP服務,其他插件可以通過該服務注冊Servlet和靜態頁面。

OSGi標準中的HTTP服務接口如下:

?
  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. }??


部署結構圖( 轉載 ):



因為OSGi是最早為嵌入式系統設計,所以OSGi標準中的HTTP服務只提供了有限的Servlet與靜態資源的發布功能,沒有一個完整的WEB容器概念,這種模式更適合通過WEB方式暴露(Export)服務,不太適合開發展現層的WEB應用。

通過Equinox提供的擴展/擴展點功能可以簡化這種方式WEB應用的開發,就是通過plugin.xml來配置Servlet和靜態頁面的注冊。

解決方案三: 設計適合OSGi環境的Servlet容器,構建純插件體系結構的WEB層

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



這三種插件類型間關系類似Decorator模式,從內到外增加"特征"描述:
  1. OSGi標準插件,自描述文件"META-INF/MANIFEST.MF"
  2. OpenCore插件,增加自描述文件"META-INF/opencore.xml",實現符合OSGi環境的依賴注冊(IoC)與動態擴展點
  3. OpenCore Web插件,增加自描述文件"WEB-INF/web.xml"(符合Servlet規范),WEB特性的插件,可以部署在Servlet容器內

這樣我們可以把一個應用的WEB層像業務層一樣,分割為多個插件,部署在OSGi/Equinox的框架中.

部署結構圖:






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

Google Code上發布了一個基于OpenCore的示例項目linktalk,一個基于GWT、Equinox、OpenCore的Ajax聊天室。

項目地址: http://code.google.com/p/lintkalk

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

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

相關資源:

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

OpenCore:基于OSGi開發純插件體系結構的WEB應用程序


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产综合久久久久 | 一级毛片视频播放 | 久久综合九色婷婷97 | 高清影院|精品秒播3 | 久久免费在线观看 | 久热草| 亚洲va久久久久综合 | 自拍偷自拍亚洲精品被多人伦好爽 | 久久成人综合网 | 最新亚洲国产有精品 | 91视频地址 | 综合亚洲欧美日韩一区二区 | 最新国产精品好看的国产精品 | 99国内精品 | 日本一级毛片大片免费 | 激情综合五月亚洲婷婷 | 91热久久免费频精品动漫99 | 99爱视频精品免视看 | 国产在线成人精品 | 日韩欧美一级毛片精品6 | 日日操日日爽 | 精品亚洲一区二区三区 | 欧美日韩高清在线观看一区二区 | 亚洲国产男人本色在线观看的a站 | 日本特级毛片 | 玖玖精品| 香蕉视频网站在线播放 | 九九精品视频一区在线 | 免费观看欧美精品成人毛片能看的 | 久久久精品日本一区二区三区 | 香蕉久热| 国产高清一级毛片在线不卡 | 亚洲欧洲精品在线 | 久久国产精品成人免费 | 2022国内精品免费福利视频 | 欧美日韩国产在线观看 | 毛片免费看看 | 精品久久久中文字幕一区 | 高清在线精品一区二区 | 亚洲精品国产高清不卡在线 | 国产福利在线观看视频 |