ONOS编程系列一.docx_第1页
ONOS编程系列一.docx_第2页
ONOS编程系列一.docx_第3页
ONOS编程系列一.docx_第4页
ONOS编程系列一.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ONOS编程系列(一)之简单应用开发北京石头 15-04-17 3,275人围观一个ONOS application是使用maven做管理的OSGi bundle。 因此,ONOS application 可以归结为Java类和POM文件的集合。本教程以基于intent的交互式转发application为例,讨论了如何从零开始建立一个新应用。本教程假设读者已经具备ONOS的运行经验,能够熟练启动ONOS实例。有关ONOS的启动不做过多描述。如果出现启动上的问题,请移步官方wiki文档自行寻找答案。本文章结束后,你应该学会: 应用的组织与结构; 如何在多个服务中注册你的应用; 北向API的基本应用; 如何运行一个应用。一、在Eclipse中导入工程直接按照maven项目导入就可以,详情请见ONOS环境部署。1.1 注意在ONOS项目中,对代码有着格式上的一些要求,不管是正式代码,还是测试用例。请根据要求修改增加代码的格式。如果想要跳过代码checkstyle,可以在onos项目根目录下的pom。xml文件中,注释掉关于checkstyle的plugin:不过非常不建议这样做。最好的方法还是按照官方的要求,进行编程。关于代码格式检查,如果使用的是Eclipse,可以配置checkstyle进行检查:一路点击eclipse-help-Eclipse Marketplace,进入界面:在输入框里输入“checkstyle”,然后选择框住的那个插件进行傻瓜式安装,就是一路next。这个过程很有可能会报错,Eclipse提示找不到下载网址。如果这种情况,可在/update/这个地方下载,在本地安装就可以了。安装好以后,在window-preference弹出的界面里就能看到checkstyle的选项了。单击该选项,右面出现相关界面:然后点击NEW按钮,增加一个checkstyle文件,在本地ONOS工程里找到onos自己的checkstyle文件,别忘记起个名字。然后就能在checkstyle文件列表里看到刚刚新添加的文件了。我给它的命名是ONOS。接下来选中该项,点击右边的“Set as Default”,再点击OK,就大功告成了。后面再新加的文件任意处右键,就能在菜单列表里看到checkstyle的选项了。只需要点击“Check Code with Checkstyle”,就能检查本文件的代码格式是否符合onos的要求了。二、项目骨架2.1 设置项目的目录结构应用的根目录设置在apps/之下:1$ mkdir -p $ONOS_ROOT/apps/ifwd应用的源文件定义在src/main/java/之下:1 $ mkdir -p $ONOS_ROOT/apps/ifwd/src/main/java/org/onosproject/ifwd类似的,测试文件定义在src/test/java/之下:1 $ mkdir -p $ONOS_ROOT/apps/ifwd/src/test/java/org/onosproject/ifwd2.2 添加并编辑pom文件在应用的根目录/apps/ifwd/下编辑pom文件:在本例中,应用的名字是onos-app-ifwd。在启动karaf/ONOS命令行界面以后,直接用feature:install加上名字,即可安装此应用。然后,编辑apps/pom.xml,在文件中以形式包含该项目:2.3 在karaf中注册该应用Karaf在运行时若要部署该应用module,需要名为feature.xml的描述性文件,编辑$ONOS_ROOT/features/features.xml:三、完成项目代码该应用的核心是名为IntentReactiveForwarding.java的文件,被定义在$ONOS_ROOT/apps/src/main/java/org/onosproject/ifwd/里。为了便于对文档进行注释,在main/java/下需要添加一个package-info.java文件,其包含一下内容:一般IDE会提供生成这个文件的选项。Eclipse在新建包的时候会提供该选项:剩下的部分将会描述如何编辑IntentReactiveForwarding类。3.1 注册Karaf,使其自动加载karaf的模块加载机制需要几个annotations,即注解,去注册。可用的注解尤其是以下四个尤为重要: Component(immediate = true)-declares a class as a component to activate, andforces immediate activation; Activate- marks a method as the method to call duringthe component startup routine; Deactivate- marks a method as the method to call during component shutdown; Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)- Marks a service as an applications dependency,and requires one instance of such a service to be loaded before this applications activation.3.2 注册服务接下来,我们的应用必须使用CoreService注册一个独一无二的application ID,这样才能够使该应用正常使用ONOS的其他服务。我们的应用接下来还要使用PacketService监听PacketIn和PacketOut事件。而PacketService需要一个事件处理器的类,该类用途单一,通常写在其所属类的内部,成为其私有内部类:3.3 增加包处理代码在上一步的私有内部类ReactivePacketProcessor里,要覆写扩展自接口PacketProcessor的方法process()。每当有网络包进来的时候,PacketService都会调用一下process()函数。这意味着我们可以在这个方法里定义我们自己的包转发行为:接下来我们要实现上图中用到的三个方法,注意,这些方法定义在私有内部类的外面,是IntentReactiveForwarding的成员:3.4 编译该应用进入ONOS根目录,键入“mvn clean install”,等待编译结果。这个时候通常的结果就是BUILD SUCCESS。当前最有可能遇到的问题,就是checkstyle的时候出现了错误,实在不想改代码了,可以直接注释掉checkstyle的plugin。3.5 启动该应用启动分为动态启动与静态启动:动态启动就是用karaf clean命令启动onos之后,在onos命令行下键入feature:installonos-app-ifwd命令安装该应用。静态启动就是修改karaf的启动配置文件。该文件路径为$KARAF_ROOT/etc/org.apache.karaf.features.cfg,直接将onos-app-ifwd字样缀到featuresBoot变量的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论