那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenDaylight的示例

汽車電子技術 ? 來源:碼農與軟件時代 ? 作者:碼農與軟件時代 ? 2023-02-14 14:11 ? 次閱讀

OpenDaylight提供了一個例子:Toaster(烤面包機),借這個例子學習OpenDaylight的特性。在Toaster中,真正有關烤面包機相關的代碼較少,它只是一種OpenDaylight具體思想的展示品,已有相關文章對其進行了分析。現在我們舉一個永恒的示例:Hello World。

一、應用程序類型

OpenDaylight應用程序開發,分如下兩種:

(1)如果提供API接口能夠滿足當前需求,那么只需基于REST API開發External System(外置式應用程序);

(2)如果提供的API接口不能滿足當前需求,則需要進行Internal System(內置式應用程序)的開發,可以理解為插件。

二、應用程序開發流程

對于External System來說,我們在介紹基于REST API編程時再進行介紹。下面我們來看下,Internal System的開發流程如下圖所示:

圖片

(1)生成項目骨架(Archetype)

Archetype是一個Maven項目模板工具包,使用Archetype來生成項目骨架,可以使得開發人員在開發新的應用程序時,使用與ODL風格一致的最佳實踐方法。

(2)定義模型(model)

YANG在OpenDaylight中做為建模語言使用,MD-SAL中M即是YANG。YANG的使用已不局限于NETCONF。YANG模型定義之后,通過YANG TOOLS可以自動生成部分代碼,但對于Model對應的具體實現需要添加相關業務邏輯。

執行mvn clean install -Dmaven.test.failure.ignore=true

圖片

(3)代碼實現

①實現Impl:添加業務邏輯(上圖藍色部分);

②配置blueprint.xml:xml文件定義和描述了不同組件的組裝,它是Blueprint編程模型的關鍵。規范描述了組件如何獲得實例,如何捆綁到一起形成一個運行模塊。

(4)構建安裝

執行 mvn clean install命令,可以將代碼打包并安裝到倉庫中。

圖片

(5)測試

OpenDaylight提供了API測試頁面,可以在該頁面直接進行API的測試,地址為:http://localhost:8181/apidoc/explorer/index.html

三、Hello示例

1.構建Hello項目

步驟1 執行構建項目命令:

mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeRepository=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ -DarchetypeCatalog=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/archetype-catalog.xml

輸入Hello交互信息

Define value for property 'groupId': org.opendaylight.hello

Define value for property 'artifactId': hello

[INFO] Using property: version = 0.1.0-SNAPSHOT

Define value for property 'package' org.opendaylight.hello: :

Define value for property 'classPrefix' Hello: : hello

Define value for property 'copyright': No

[INFO] Using property: copyrightYear = 2017

Confirm properties configuration:

groupId: org.opendaylight.hello

artifactId: hello

version: 0.1.0-SNAPSHOT

package: org.opendaylight.hello

classPrefix: hello

copyright: No

copyrightYear: 2017

Y: : Y

安裝成功的信息提示:

[INFO] ----------------------------------------------------------------------------

[INFO] Using following parameters for creating project from Archetype: opendaylight-startup-archetype:1.3.0-Carbon

[INFO] ----------------------------------------------------------------------------

[INFO] Parameter: groupId, Value: org.opendaylight.hello

[INFO] Parameter: artifactId, Value: hello

[INFO] Parameter: version, Value: 0.1.0-SNAPSHOT

[INFO] Parameter: package, Value: org.opendaylight.hello

[INFO] Parameter: packageInPathFormat, Value: org/opendaylight/hello

[INFO] Parameter: classPrefix, Value: hello

[INFO] Parameter: package, Value: org.opendaylight.hello

[INFO] Parameter: version, Value: 0.1.0-SNAPSHOT

[INFO] Parameter: copyright, Value: No

[INFO] Parameter: groupId, Value: org.opendaylight.hello

[INFO] Parameter: artifactId, Value: hello

[INFO] Parameter: copyrightYear, Value: 2017

[WARNING] Don't override file D:\\CODE\\odlexample\\hello\\hello\\pom.xml

[INFO] Project created from Archetype in dir: D:\\CODE\\odlexample\\hello\\hello

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 45.526 s

步驟2. 構建Hello項目,執行命令

mvn clean install -Dmaven.test.failure.ignore=true

[INFO] --- maven-site-plugin:3.6:attach-descriptor (generate-site) @ hello-aggregator ---

[INFO] Attaching 'src\\site\\site.xml' site descriptor with classifier 'site'.

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary:

[INFO]

[INFO] ODL :: org.opendaylight.hello :: hello-api ......... SUCCESS [ 19.565 s]

[INFO] ODL :: org.opendaylight.hello :: hello-impl ........ SUCCESS [ 8.826 s]

[INFO] ODL :: org.opendaylight.hello :: hello-cli ......... SUCCESS [ 8.878 s]

[INFO] ODL :: org.opendaylight.hello :: hello-features .... SUCCESS [15:41 min]

[INFO] ODL :: org.opendaylight.hello :: hello-karaf ....... SUCCESS [ 41.676 s]

[INFO] ODL :: org.opendaylight.hello :: hello-artifacts ... SUCCESS [ 1.794 s]

[INFO] ODL :: org.opendaylight.hello :: hello-it .......... SUCCESS [03:38 min]

[INFO] hello .............................................. SUCCESS [ 23.209 s]

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 21:07 min

生成的項目骨架為:

圖片

生成的代碼文件為:

圖片

2.定義模型

步驟1 修改 api/src/main/yang/hello.yang,增加簡單的Hello RPC信息:

圖片

步驟2 執行命令:mvn clean install -Dmaven.test.failure.ignore=true

圖片

3.代碼實現

步驟1 實現Impl:

圖片

步驟2 配置blueprint.xml

在文件impl-blueprint.xml( src/main/resources/org/opendaylight/blueprint)注冊RPC引用,增加粗體部分信息。

圖片

注:在 Blueprint XML 中,bean 元素將定義一個 bean 管理器。用于對象構造的參數由 argument 元素指定;注入的屬性則由 property 子元素指定。property 元素指定要注入的屬性的名稱和值。屬性名與 Java 類中的 setter 方法名對應。例如,如果屬性名為 foo,那么對應的 setter 方法為 setFoo(arg)。屬性名和對應的 setter 方法名遵循 JavaBeans 規范中定義的屬性設計模式。

步驟3 類HelloProvider中init方法中綁定HelloService和HelloWorldImpl

圖片

4.構建安裝、啟動測試

步驟1 執行命令 mvn clean install

步驟2 啟動OpenDaylight

\\CODE\\odlexample\\hello\\hello\\karaf\\target\\assembly\\bin>karaf

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=256M; support was removed in 8.0

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0

Apache Karaf starting up. Press Enter to open the shell now...

100% [========================================================================]

Karaf started in 29s. Bundle stats: 294 active, 294 total

步驟3 瀏覽器打開如下地址(admin\\admin):

http://localhost:8181/apidoc/explorer/index.html

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1511

    瀏覽量

    62401
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93988
  • REST
    +關注

    關注

    0

    文章

    33

    瀏覽量

    9447
收藏 人收藏

    評論

    相關推薦

    Matlab繪圖示例

    Matlab繪圖示例
    發表于 05-10 10:07 ?831次閱讀

    ChipScope使用示例

    Xilinx FPGA工程例子源碼:ChipScope使用示例
    發表于 06-07 14:13 ?7次下載

    設計示例

    六設計示例
    的頭像 發表于 05-29 11:10 ?1268次閱讀
    設計<b class='flag-5'>示例</b>

    NanDAC+mbed示例

    NanDAC+mbed示例
    發表于 03-23 09:32 ?10次下載
    NanDAC+mbed<b class='flag-5'>示例</b>

    示例SigmaStudio程序

    示例SigmaStudio程序
    發表于 03-23 18:25 ?15次下載
    <b class='flag-5'>示例</b>SigmaStudio程序

    華為游戲服務示例代碼教程案例

    概述 游戲服務kit安卓示例代碼集成了華為游戲服務的眾多API,提供了示例代碼程序供您參考和使用,下面是對示例代碼不同包的描述。 achievement: 成就特性的示例代碼。 arc
    發表于 04-11 11:09 ?4次下載

    如何從零開始學OpenDaylight

    OpenDaylight的邏輯架構分為應用層、控制器層和數據轉發層。其中,應用層聚焦網絡業務邏輯開發,負責資源編排;控制器層進行全局網絡的管理;數據轉發層為各種網絡設備,負責數據的轉發。
    的頭像 發表于 02-14 14:04 ?2365次閱讀
    如何從零開始學<b class='flag-5'>OpenDaylight</b>

    OpenDaylight的運行環境

    OpenDaylight作為一種開源的SDN控制器,使用Java語言編寫,
    的頭像 發表于 02-14 14:08 ?913次閱讀
    <b class='flag-5'>OpenDaylight</b>的運行環境

    OpenDaylight中的OSGi

    從寫單個類的打印Hello World小程序到OSGi模塊化開發,確實存在較大的難度,本文將從模塊化、OSGI模型以及OSGI在OpenDaylight中的應用等方面進行介紹。
    的頭像 發表于 02-14 15:05 ?823次閱讀
    <b class='flag-5'>OpenDaylight</b>中的OSGi

    OpenDaylight中的DataStore是什么

    SDN起源于校園網,發揚光大于數據中心,現廣泛用于廣域網,SDN控制器,可能管理著數十萬臺軟交換機,下發數百萬乃至上千萬條路由信息。因此,作為SDN控制器的開源項目OpenDaylight,無論是業務邏輯還是數據存儲,
    的頭像 發表于 02-14 15:13 ?1560次閱讀
    <b class='flag-5'>OpenDaylight</b>中的DataStore是什么

    軟件示例:DA1468x 示例設置

    軟件示例:DA1468x 示例設置
    發表于 03-13 20:15 ?0次下載
    軟件<b class='flag-5'>示例</b>:DA1468x <b class='flag-5'>示例</b>設置

    教程 5:BLE 安全示例

    教程 5:BLE 安全示例
    發表于 03-15 20:34 ?0次下載
    教程 5:BLE 安全<b class='flag-5'>示例</b>

    Vivado HDL編寫示例

    Vivado 軟件提供了HDL編寫中常用的示例,旨在幫助初學者更好地理解和掌握HDL編程,這里分享一下verilog代碼示例
    的頭像 發表于 05-16 16:58 ?1116次閱讀

    軟件示例:DA1468x 示例設置

    軟件示例:DA1468x 示例設置
    發表于 07-05 18:59 ?0次下載
    軟件<b class='flag-5'>示例</b>:DA1468x <b class='flag-5'>示例</b>設置

    自己編寫函數示例代碼很難嗎?分享幾個示例

    Q A 問: Arduino Uno的函數示例 我決定自己編寫函數示例代碼,因為這應該是Arduino中的基本示例。網絡上確實有關于使用函數的文檔,但是,如果要嘗試使用代碼環境,則必須得訪問
    的頭像 發表于 11-16 16:05 ?577次閱讀
    自己編寫函數<b class='flag-5'>示例</b>代碼很難嗎?分享幾個<b class='flag-5'>示例</b>!
    怀柔区| 平阴县| 百家乐算点子打法攻略| 百家乐官网桌定制| 彩票大赢家| 百家乐几点不用补| 大玩家百家乐官网游戏| 真人百家乐蓝盾赌场娱乐网规则| 百家乐官网皇室百家乐官网的玩法技巧和规则 | 六合彩即时开奖| 百家乐高| 澳门百家乐棋牌游戏| 百家乐官网揽法大全| 百家乐官网声音不印网| G3百家乐的玩法技巧和规则| 真让百家乐游戏开户| 网上百家乐官网是真是假天涯论坛| 百家乐官网是如何出千的| 365新网址| 大发888娱乐网下 | 大发888m磨卡游戏| 百家乐赌博牌路分析| 百家乐游戏算牌| 百家乐官网那里玩| 哪家百家乐官网最好| 玩百家乐官网新澳门娱乐城| 百家乐官网最新套路| 彩票| 澄江县| 皇冠网h| 绵阳市| 百家乐官网注册| 百家乐官网全程打庄| 易胜博百家乐官网下载| 日博365| 新宝百家乐官网网址| 网上百家乐娱乐场| 潘多拉百家乐官网的玩法技巧和规则 | 星子县| 门头沟区| 在线百家乐官网大家赢|