




已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于Maven構(gòu)建OSGI概述:OSGI的出現(xiàn)彌補(bǔ)了Java模塊化的不足。而模塊化和動(dòng)態(tài)化的概念實(shí)現(xiàn)了我們夢(mèng)想中的“即插即用”的系統(tǒng)。本文以Maven為工具構(gòu)建基于Maven的OSGI程序。這其中包括工程的創(chuàng)建、容器的啟動(dòng)、Bundle的導(dǎo)入和Bundle的創(chuàng)建等等。開(kāi)發(fā)環(huán)境使用的是Eclipse 3.6。1、使用Maven創(chuàng)建一個(gè)OSGI項(xiàng)目在Eclipse中選擇New-Project。彈出如下窗口:然后選擇Maven-Maven Project。如下圖所示:點(diǎn)擊”Next”,進(jìn)行下一步的選擇。如下圖:在Filter中選擇過(guò)濾條件,輸入OSGI。如下圖:選擇OPS4J的pax construct。繼續(xù)next。輸入Group Id 和Artifact Id,點(diǎn)擊Finish完成。(找到工程下父級(jí)pom.xml文件,刪除maven-pax-plugin插件的版本信息,也就是刪除該元素??梢允褂肕aven install 進(jìn)行驗(yàn)證。 )PS: 該系列操作也可以使用下面的命令進(jìn)行完成:mvn org.ops4j:maven-pax-plugin: create-project-DgroupId=pany.osgi-DartifactId=test-osgi-Dversion=0.12、啟動(dòng)OSGI容器選擇運(yùn)行按鈕旁邊的三角箭頭,選擇 Run Configuration。如下圖:選擇Maven Build,在此選項(xiàng)上右鍵點(diǎn)擊選擇 New。如下圖:在該圖示中,可以選擇使用Browse Workspace或者 Browse File System來(lái)選擇項(xiàng)目,在此可以使用Browse Workspace來(lái)選擇我們新建立的項(xiàng)目。在Goals中輸入 install pax:provision。如下圖:點(diǎn)擊Run直接運(yùn)行。這時(shí)刷新項(xiàng)目會(huì)生成一個(gè)runner的目錄。3、使用Maven導(dǎo)入OSGI Bundle根據(jù)如上所示步驟,新建立maven 構(gòu)建命令,命令依次如下:Webconsole(這不是命令)pax:import-bundle-DgroupId=org.apache.felix -DartifactId=org.apache.felix.webconsole -Dversion=3.1.8Servlet(這不是命令)pax:import-bundle -DgroupId=org.apache.felix -DartifactId=javax.servlet -Dversion=1.0.0Scr(這不是命令)pax:import-bundle-DgroupId=org.apache.felix -DartifactId=org.apache.felix.scr -Dversion=1.0.8jetty(這不是命令)pax:import-bundle -DgroupId=org.apache.felix -DartifactId=org.apache.felix.http.jetty -Dversion=2.2.0其中scr的最新版本為1.6.0,但是在環(huán)境中不能運(yùn)行成功,所以改為了1.0.8。接下來(lái)運(yùn)行mvn install ,或者使用菜單方式 Run As運(yùn)行 Maven install。然后運(yùn)行上圖中所配置的install pax:provision。運(yùn)行成功后將會(huì)顯示如下圖所類(lèi)似的信息:這時(shí)在瀏覽器中輸入地址:http:/localhost:8080/system/console/。用戶(hù)名和密碼均為admin,登陸成功后將會(huì)顯示,如下頁(yè)面:該頁(yè)面顯示出了bundle的信息??梢詫?duì)bundle進(jìn)行stop、update、uninstall等操作。4、使用Maven創(chuàng)建OSGI Bundle新建構(gòu)建命令如下:pax:create-bundle -Dpackage=IQueryWord -Dname=QueryWord -Dversion=0.0.1-SNAPSHOT(-Dpackage和-Dname的內(nèi)容可以被替換)接著執(zhí)行 install pax:provision。5、替換OSGI 框架的實(shí)現(xiàn)運(yùn)行如下命令:pax:provision Dframework=kf或者:pax:provision Dframework=equinox6、部署OSGI Bundle 到Maven 倉(cāng)庫(kù)首先下載Nexus professional(收費(fèi)),地址為:/download-nexus.html當(dāng)前最新版本為。壓縮文件為:解壓之后有兩個(gè)文件夾,如下圖:進(jìn)入nexus-professional-webapp-binjsw目錄找到和自己相應(yīng)系統(tǒng)的文件夾,如下圖所示:我的為windows-x86-32。然后執(zhí)行nexus.bat。如下圖:在地址欄輸入:http:/localhost:8081/nexus/如圖:點(diǎn)擊Log In。admin用戶(hù)的密碼為admin123. deployment用戶(hù)的密碼為deployment123。設(shè)置/.m2/setting.xml文件的內(nèi)容如下: nexus * http:/localhost:8081/nexus/content/groups/public nexus central http:/central true true central http:/central true true nx-snapshots deployment deployment123 nx-releases deployment deployment123 nexus 設(shè)置父級(jí)pom.xml文件,在節(jié)點(diǎn)下加入如下內(nèi)容: nx -releases Nexus Releases http:/localhost:8081/nexus/content/repositories/releases nx-snapshots Nexus Snapshots http:/localhost:8081/nexus/content/repositories/snapshots 新建Maven構(gòu)建命令,deploy DremoteOBR 。然后會(huì)在Snapshots中看到如下圖所示的內(nèi)容:完成此步驟之后,就可以在Maven中引用其他文件一樣來(lái)依賴(lài)該jar文件。例如:com.yihua.osgi.test-osgiIQueryWord0.0.1-SNAPSHOT注冊(cè)web應(yīng)用請(qǐng)參考如下實(shí)例程序:package ernal;import javax.servlet.Servlet;import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;import org.osgi.framework.ServiceEvent;import org.osgi.framework.ServiceListener;import org.osgi.framework.ServiceReference;import org.osgi.service.http.HttpService;/* * Extension of the default OSGi bundle activator */public final class ExampleActivator implements BundleActivator, ServiceListener private BundleContext bundleContext;private ServiceReference ref;private Servlet servlet;public void start(BundleContext context) throws Exception bundleContext = context;servlet = new QueryWebServlet(bundleContext);/ 在HttpService中注冊(cè)ServletregisterServlet();public void stop(BundleContext context) throws Exception try unregisterServlet(); catch (Throwable t) t.printStackTrace();servlet = null;bundleContext = null;ref = null;public void serviceChanged(ServiceEvent event) switch (event.getType() case ServiceEvent.REGISTERED:registerServlet();break;case ServiceEvent.UNREGISTERING:unregisterServlet();break;/* * 注冊(cè)Web應(yīng)用 */private void registerServlet() if (ref = null) ref = bundleContext.getServiceReference(HttpService.class.getName();if (ref != null) try HttpService http = (HttpService) bundleContext.getService(ref);if (null != http) / 注冊(cè)動(dòng)態(tài)資源Servlethttp.registerServlet(/osgi/servlet, servlet, null, null);/ 注冊(cè)靜態(tài)資源HTMLhttp.registerResources(/osgi/file, webapp, null); catch (Exception e) e.printStackTrace();/* * 卸載Web應(yīng)用 */private void unregisterServlet()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于機(jī)器學(xué)習(xí)的熔煉過(guò)程預(yù)測(cè)建模-洞察闡釋
- 噪音暴露與聽(tīng)力保護(hù)研究-洞察闡釋
- 物聯(lián)網(wǎng)與多傳感器融合優(yōu)化-洞察闡釋
- 工業(yè)互聯(lián)網(wǎng)-洞察闡釋
- 重慶財(cái)經(jīng)職業(yè)學(xué)院《社會(huì)體育學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧工業(yè)大學(xué)《師德與教育政策法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 漳州理工職業(yè)學(xué)院《證券投資學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 德陽(yáng)科貿(mào)職業(yè)學(xué)院《基礎(chǔ)醫(yī)學(xué)概論(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 許昌學(xué)院《照明工程施工及管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連職業(yè)技術(shù)學(xué)院《民族傳統(tǒng)人居生態(tài)智慧實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 《基礎(chǔ)護(hù)理學(xué)(第七版)》考前強(qiáng)化模擬練習(xí)試題庫(kù)500題(含答案)
- 國(guó)家開(kāi)放大學(xué)《應(yīng)用寫(xiě)作(漢語(yǔ))》形考任務(wù)1-6答案
- 2024年西藏初中學(xué)業(yè)水平考試生物卷試題真題(含答案解析)
- 非法醫(yī)療美容培訓(xùn)
- 成人腦室外引流護(hù)理-中華護(hù)理學(xué)會(huì)團(tuán)體 標(biāo)準(zhǔn)
- 順豐運(yùn)作主管
- 2024年代持掛名法人協(xié)議書(shū)模板范本
- 植物蛋白功能性修飾優(yōu)化
- 2024年黔東南州能源投資限公司招聘(高頻重點(diǎn)提升專(zhuān)題訓(xùn)練)共500題附帶答案詳解
- JGJ100-2015 車(chē)庫(kù)建筑設(shè)計(jì)規(guī)范
- 2024年陜西省西安市碑林區(qū)西北工業(yè)大學(xué)附屬中學(xué)丘成桐少年班選拔復(fù)試數(shù)學(xué)試題
評(píng)論
0/150
提交評(píng)論