




已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于Maven構建OSGI概述:OSGI的出現(xiàn)彌補了Java模塊化的不足。而模塊化和動態(tài)化的概念實現(xiàn)了我們夢想中的“即插即用”的系統(tǒng)。本文以Maven為工具構建基于Maven的OSGI程序。這其中包括工程的創(chuàng)建、容器的啟動、Bundle的導入和Bundle的創(chuàng)建等等。開發(fā)環(huán)境使用的是Eclipse 3.6。1、使用Maven創(chuàng)建一個OSGI項目在Eclipse中選擇New-Project。彈出如下窗口:然后選擇Maven-Maven Project。如下圖所示:點擊”Next”,進行下一步的選擇。如下圖:在Filter中選擇過濾條件,輸入OSGI。如下圖:選擇OPS4J的pax construct。繼續(xù)next。輸入Group Id 和Artifact Id,點擊Finish完成。(找到工程下父級pom.xml文件,刪除maven-pax-plugin插件的版本信息,也就是刪除該元素??梢允褂肕aven install 進行驗證。 )PS: 該系列操作也可以使用下面的命令進行完成:mvn org.ops4j:maven-pax-plugin: create-project-DgroupId=pany.osgi-DartifactId=test-osgi-Dversion=0.12、啟動OSGI容器選擇運行按鈕旁邊的三角箭頭,選擇 Run Configuration。如下圖:選擇Maven Build,在此選項上右鍵點擊選擇 New。如下圖:在該圖示中,可以選擇使用Browse Workspace或者 Browse File System來選擇項目,在此可以使用Browse Workspace來選擇我們新建立的項目。在Goals中輸入 install pax:provision。如下圖:點擊Run直接運行。這時刷新項目會生成一個runner的目錄。3、使用Maven導入OSGI Bundle根據(jù)如上所示步驟,新建立maven 構建命令,命令依次如下: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)境中不能運行成功,所以改為了1.0.8。接下來運行mvn install ,或者使用菜單方式 Run As運行 Maven install。然后運行上圖中所配置的install pax:provision。運行成功后將會顯示如下圖所類似的信息:這時在瀏覽器中輸入地址:http:/localhost:8080/system/console/。用戶名和密碼均為admin,登陸成功后將會顯示,如下頁面:該頁面顯示出了bundle的信息。可以對bundle進行stop、update、uninstall等操作。4、使用Maven創(chuàng)建OSGI Bundle新建構建命令如下:pax:create-bundle -Dpackage=IQueryWord -Dname=QueryWord -Dversion=0.0.1-SNAPSHOT(-Dpackage和-Dname的內容可以被替換)接著執(zhí)行 install pax:provision。5、替換OSGI 框架的實現(xiàn)運行如下命令:pax:provision Dframework=kf或者:pax:provision Dframework=equinox6、部署OSGI Bundle 到Maven 倉庫首先下載Nexus professional(收費),地址為:/download-nexus.html當前最新版本為。壓縮文件為:解壓之后有兩個文件夾,如下圖:進入nexus-professional-webapp-binjsw目錄找到和自己相應系統(tǒng)的文件夾,如下圖所示:我的為windows-x86-32。然后執(zhí)行nexus.bat。如下圖:在地址欄輸入:http:/localhost:8081/nexus/如圖:點擊Log In。admin用戶的密碼為admin123. deployment用戶的密碼為deployment123。設置/.m2/setting.xml文件的內容如下: 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 設置父級pom.xml文件,在節(jié)點下加入如下內容: nx -releases Nexus Releases http:/localhost:8081/nexus/content/repositories/releases nx-snapshots Nexus Snapshots http:/localhost:8081/nexus/content/repositories/snapshots 新建Maven構建命令,deploy DremoteOBR 。然后會在Snapshots中看到如下圖所示的內容:完成此步驟之后,就可以在Maven中引用其他文件一樣來依賴該jar文件。例如:com.yihua.osgi.test-osgiIQueryWord0.0.1-SNAPSHOT注冊web應用請參考如下實例程序: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中注冊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;/* * 注冊Web應用 */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) / 注冊動態(tài)資源Servlethttp.registerServlet(/osgi/servlet, servlet, null, null);/ 注冊靜態(tài)資源HTMLhttp.registerResources(/osgi/file, webapp, null); catch (Exception e) e.printStackTrace();/* * 卸載Web應用 */private void unregisterServlet()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 算法與數(shù)據(jù)結構研究進展試題及答案
- 網(wǎng)絡管理員考題解析與試題及答案
- 計算機技術發(fā)展趨勢分析試題及答案
- 熱點法律問題與法學概論試題及答案結合
- 行政法學習成效評估的方法探討:試題及答案
- 2025年法學概論考試的軟技能要求及試題及答案
- 財務健康度評估試題及答案
- 技術員考試試題及答案比較
- 軟件重構與優(yōu)化技術研究試題及答案
- 四川省成都市西川中學2025屆八下數(shù)學期末統(tǒng)考模擬試題含解析
- 生物醫(yī)學電子學智慧樹知到期末考試答案章節(jié)答案2024年天津大學
- 新中考考試平臺-考生端V2.0使用手冊
- DB14∕T 1319-2021 公路工程標準工程量清單及計量規(guī)范
- 環(huán)境土壤學PPT課件
- 痰標本的采集方法PPT課件
- 起重機軌道安裝評定標準
- 劉橋二礦二1水平放水試驗設計
- 軟件系統(tǒng)運行維護流程圖
- 培養(yǎng)基模擬灌裝方案
- 集裝袋噸袋項目建議書范文
- 某紡織廠供配電系統(tǒng)設計(DOC25頁)
評論
0/150
提交評論