日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用

發布時間:2025/4/5 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發一個簡單的OSGi Web應用實例

一個簡單的Web應用

我們寫一個簡單的 Web 應用 compute.html :計算兩個數字的和或乘積。如下圖所示:

圖1.一個簡單例子

一個簡單例子.bmp

為了體現 OSGi bundle 的動態部署能力,我們寫兩個 service bundle,其中一個計算兩個數字的和(稱為 add bundle),另外一個計算兩個數字的積(稱為 multiply bundle)。 當我們點擊“Compute”按鈕的時候,如果此時 add bundle 被部署,則頁面將返回兩個數字的和,否則如果此時 multiply bundle 被部署,則頁面將返回兩個數字的積。

1. 下載 Eclipse 3.4

2. 獲取所有 OSGi, Equinox 和 Spring 的插件, 如下圖所示:

圖2.相關插件列表

1. 打開 Eclipse, 設置 target platform 為上述插件集合

該應用主要包含兩個層次: 服務層和 Web 層。Web 層基于 Spring-MVC 實現,包含處理 Web訪問相關的 bundle(本例中只有一個)。服務層包含處理數字計算的 bundle,本例中包含一個聲明服務接口的 compute interface bundle 和兩個實現該服務接口的 bundle :add bundle 和 multiply bundle。基本模塊結構如下圖所示:

圖3.基本框架

Step 1:實現Service Layer

服務層的三個 OSGi bundle 實現完畢之后如下圖所示 :

圖4.服務層

服務層.bmp

其中 com.zxn.example.service.compute 是聲明服務接口的 bundle。com.zxn.example.service.compute.add和com.zxn.example.service.compute.multiply 是實現了服務接口的兩個 bundle。

1. com.zxn.example.service.compute

聲明一個 Compute 接口,其中包含一個接口方法 computeNums(),如下圖所示 :

圖5.服務層接口bundle

1. com.zxn.example.service.compute.add

bundle com.zxn.example.service.compute.add 的基本程序結構如下圖所示:

圖6.接口實現bundle:add

在該 add bundle 中,添加一個 Add 類,實現 Compute 接口,如下圖所示:

圖7.接口實現代碼:Add類

注意到我們在 META-INF 下建了一個 spring 目錄,并且添加了一個 computeAdd-context.xml 文件。系統啟動時,Spring 將利用該 xml 文件創建一個 bean 實例,并把該 bean 輸出為一個 OSGi service,如下圖所示 :

圖8. Spring聲明文件:computeAdd-context.xml

該xml文件中,osgi : service是 Spring-DM 輸出 OSGi service 的標記,其中的 interface屬性標明了該 service 實現的服務接口。

1. com.zxn.example.service.compute.multiply

按照與 add bundle 同樣的方法,實現 multiply bundle,如下圖所示:

圖9.接口實現代碼:Multiply類

接口實現代碼-Multiply類.bmp

類似的,添加一個 computeMultiply-context.xml 輸出 OSGi service,如下圖所示 :

圖10. Spring聲明文件:computeMultiply-context.xml

Step 2:實現Web Layer

Web 層只包含一個 bundle:com.zxn.example.web,采用 Spring-MVC 和 OSGi 構建,基本程序結構如下圖所示:

圖11. Web Layer程序結構

1. ComputeControler.java

該JAVA類實現了 org.springframework.web.servlet.mvc.Controller,是本 web應用中核心的 servlet,負責接受并處理 web 請求。該類調用 ComputeServiceRef 的方法實現業務邏輯。該類關鍵的方法是 handleRequest(…), 如下圖所示 :

圖12.核心servlet類

1. ComputeServiceRef.java

該 JAVA 類負責引用部署的 service bundle 完成最終計算,其中的 computeService 由 Spring 根據 OSGi 中實際部署的 service 進行注入。本例中,實際部署的 service 可能是 add bundle 或者 multiply bundle。

需要特別注意的是,此處體現了 Spring-DM 的動態特性。OSGi 的動態部署能力使得 Spring 的動態服務注入成為可能。

圖13.服務消費類

1. HTTPContextResgistry.java

該 JAVA 類負責在 OSGi 環境中配置和注冊 HTTP 服務,其關鍵方法為 bean 初始化時調用的 init( ) 方法。

圖14.在OSGi環境中注冊HTTP服務

該 init 方法中,第六行的 getHTTPService(…) 調用 OSGi 的 ServiceTracker 來獲取 OSGi環境中注冊的 HTTP 服務的引用,如下圖所示:

圖15.使用ServiceTracker獲取HTTP服務

1. computeWeb-context.xml

該 xml 文件主要用于配置 HTTPContextResgistry bean 類,以及導入對 Compute 服務接口的引用。標記 osgi : reference用于聲明要導入的服務接口,其 interface 屬性標明了該接口的定義,本例中為 com.zxn.example.service.compute.Compute 接口。

圖16. Spring聲明文件:導入服務接口

1. computeWeb-Dispatcher.xml

該 xml 文件用于配置 ComputeControler bean類。

圖17. Spring聲明文件:配置核心servlet類

以往開發 J2EE 應用通常需要將應用服務器的 runtime 集成到開發環境中才能進行程序調試,非常麻煩。基于 OSGi 的應用完全可以脫離應用服務器運行,這使得程序開發和調試變得非常容易,直接在 Eclipse 中調試運行就可以。我們在 Eclipse 中將程序運行起來,如下圖所示:

圖18.運行OSGi程序

從上圖中看到,我們同時選擇部署了 add bundle 和 multiply bundle,利用 OSGi console 察看如下:

圖19.察看部署的OSGi bundle

當 OSGi 環境中同時部署有多個服務接口的實現 bundle 時,OSGi 會選擇一個默認的 bundle提供服務。本例中,Spring 會默認注入 add bundle。我們通過 web 訪問 compute.html 頁面:

圖20.訪問頁面

點 Compute 按鈕之后,結果頁面如下:

圖21.訪問結果

可以看出,是 add bundle 提供了計算服務。下面我們通過命令 <stop 76> 來停止 add bundle的服務:

圖22.停止add bundle

圖23. add bundle狀態變為RESOLVED

重新訪問 compute.html 頁面,結果得到的是兩個數字的乘積。可以看出,是 multiply bundl

提供了計算服務。如下圖所示:

圖24.再次訪問頁面

作為當前頗具生命力的兩個標準和框架,OSGi 和 Spring 已經初步融合在一起。二者的結合,為開發企業級的 Web 應用同時提供了巨大的靈活性和動態部署能力。本文通過一個簡單的例子,描述如何開發一個基于 OSGi 和 Spring 的 Web 應用,并說明了開發過程中涉及到的技術關鍵點。

有關 Spring 和 OSGi 關聯信息,請參考 Spring-OSGi 官方網站。

有光 OSGi 聯盟和技術規范,請參考 OSGi Alliance。

有關 Eclipse 對 OSGi 的實現,請參考 Equinox 官方網站。

通過查閱 IBM developerWorks 的 Eclipse 項目資源,提高 Eclipse 技能。

訪問 developerWorks Open source 專區,這里有豐富的 how-to 信息、工具和項目更新,可以幫助您利用開放源碼技術進行開發并將其用于 IBM 產品。

總結

以上是生活随笔為你收集整理的java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲第一天堂av | 一本久道久久综合无码中文 | 中文字幕一区二区三区视频 | 蜜桃视频污在线观看 | 2018自拍偷拍| 亚洲理论片在线观看 | 精品动漫一区 | 超碰成人免费在线 | 天天射天天操天天干 | 最好看的中文字幕国语电影mv | 国产aaa大片 | 在线播放日韩 | 国产精品日韩欧美一区二区三区 | 日韩一区二区三区视频 | 岛国大片在线免费观看 | 亚洲二区一区 | 91精品久久久久久久久中文字幕 | 伦在线| 日韩精品成人在线观看 | 亚洲成人一区在线观看 | 成人在线观看一区二区三区 | 少妇视频一区二区三区 | 17c一起操| 牛牛精品一区二区 | 美女野外找人搭讪啪啪 | 国精产品一区一区三区免费视频 | 波多野结衣一二三区 | 亚洲欧美综合 | 亚洲天堂女人 | 91吃瓜今日吃瓜入口 | 波多野结衣视频免费 | 狠狠干男人的天堂 | 黄色大毛片 | 国产精久久久久久 | 国产亚洲精品久久久久久777 | 九九在线观看视频 | www.av在线视频 | 久草成人网 | 久久久久99精品成人片毛片 | 德国老妇性猛交 | 日本www高清 | 久久久久毛片 | 日韩精品电影在线观看 | 日日摸夜夜添夜夜添高潮喷水 | 一区二区美女视频 | 精品久久成人 | 天天视频入口 | 激情综合久久 | 99久久久无码国产精品性色戒 | 国产一线二线三线女 | 国产网址 | 涩涩屋污| 国产一区二区精品久久 | 日韩一区二区精品视频 | 欧美亚洲综合视频 | 丝袜 中出 制服 人妻 美腿 | 亚洲无人区码一码二码三码的含义 | 成人网站在线进入爽爽爽 | 九一国产精品 | 欧美性做爰大片免费 | 九九在线视频 | 美国色综合 | 日韩成人免费av | 国产欧美一区二区精品性色超碰 | 92精品 | 久久福利视频导航 | 波多野结衣在线观看一区 | 国产伦精品一区二区三区视频孕妇 | 黄色日比视频 | 国产日产久久高清欧美一区 | 色一情 | 国产精品污www在线观看 | 网址在线观看你懂的 | 99这里都是精品 | 中文字幕精品久久 | 色99在线 | 黄色网址在线免费 | 日韩不卡毛片 | 午夜成人免费电影 | 聚色屋| 国产成人无码一区二区在线观看 | 亚洲天堂va | 爱插视频| 成人交性视频免费看 | av网站亚洲 | 被黑人啪到哭的番号922在线 | www.午夜激情| 原来神马电影免费高清完整版动漫 | 原神女裸体看个够无遮挡 | 成人av在线播放网站 | 国产毛片欧美毛片久久久 | 上原亚衣在线观看 | 一级看片免费视频 | 在线看黄色的网站 | 特级一级黄色片 | 亚洲国产成人精品一区二区三区 | 精品国产无码在线观看 | 精品视频区 | 神马久久网站 |