上篇说了使用ballerina 语言开发扩展模块,对于注解类型的我们是需要使用java 语言进行
开发的

官方提供了一个hello 的demo可以参考 https://github.com/ballerinax/hello

注解扩展插件的使用

这个注解是调用方法之后,会生成一个文本文件

import ballerina/http;
import ballerinax/hello;@hello:Greeting{salutation: "Guten Tag!"
}
service<http:Service> helloWorld bind {port:9091} {sayHello(endpoint outboundEP, http:Request request) {http:Response response = new;response.setTextPayload("Hello, World from service helloWorld ! \n");_ = outboundEP->respond(response);}
}

开发细节

开发需要的环境是jdk8 同时需要maven ,构建完成之后,用户需要安装扩展,为了测试我使用的是直接clone 代码

  • clone 代码
git clone https://github.com/ballerinax/hello.git

  • 导入项目
  • 构建&&测试
mvn clean package 

  • 构建结果
  • 说明
    hello-extension-0.980.0.jar 文件需要放ballerian 的 /bre/lib,同时repo 包需要解压,并放到
  • 测试
import ballerina/http;
import ballerinax/hello;@hello:Greeting{salutation : "Guten Tag!"}
@http:ServiceConfig {basePath:"/dalong"
}
service<http:Service> helloWorld bind {port:9091} {sayHello(endpoint outboundEP, http:Request request) {http:Response response;response.setJsonPayload("Hello, World from service helloWorld ! \n");// Send response to the client._ = outboundEP->respond(response);}
}

  • 效果

    会生成一个hello_world.txt 文件

Guten Tag!

说明

以下为代码的结构

  • 因为开发会有依赖的打包,官方的方式是使用maven 的maven-shade-plugin ,好多mapreduce 以及开发打包也是类似的
    详细使用说明,可以参考https://ballerina.io/learn/how-to-extend-ballerina/
  • 主要的处理代码是实现 AbstractCompilerPlugin 其中包含了具体的代码处理,以及逻辑
实现 init process codeGenerated 方法,docker 扩展是一个比较有价值的参考项目

参考资料

https://github.com/ballerinax/docker
https://github.com/ballerinax/hello
https://ballerina.io/learn/how-to-extend-ballerina/

ballerina 学习 三十一 扩展开发(二)相关推荐

  1. ballerina 学习 三十 扩展开发(一)

    ballerina 主要是分为两大类 基于ballerina 语言开发的,一般是客户端的connector 使用java语言开发的(类似的基于jvm的都可以),一般是注解以及进行构件生成 baller ...

  2. firefox扩展开发(二):用XUL创建窗口控件

    firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...

  3. ballerina 学习 三十二 编写安全的程序

    ballerina编译器已经集成了部分安全检测,在编译时可以帮助我们生成错误提示,同时ballerina 标准库 已经对于常见漏洞高发的地方做了很好的处理,当我们编写了有安全隐患的代码,编译器就已经提 ...

  4. javaweb学习总结(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  5. (转)MyBatis框架的学习(三)——Dao层开发方法

    http://blog.csdn.net/yerenyuan_pku/article/details/71700957 使用MyBatis开发Dao层,通常有两个方法,即原始Dao开发方法和Mappe ...

  6. 【php7扩展开发二】全局变量

    使用C语言开发程序时经常会使用全局变量进行数据存储,这就涉及前面已经介绍过的一个问题:线程安全,PHP设计了TSRM(即:线程安全资源管理器)用于解决这个问题,内核中频繁使用到的EG.CG等都是根据是 ...

  7. PHP7扩展开发(二):配置项与全局数值

    起步 Zend引擎提供了另种管理设置值(INI)的途径.现在弄个简单的,我们经常看到php.ini里有诸如 display_errors = On 这样的全局设置.假设我们需要为我们扩展定义一个值: ...

  8. Java多线程学习三十一:ThreadLocal 是用来解决共享资源的多线程访问的问题吗?

    ThreadLocal 是不是用来解决共享资源的多线程访问的. 这是一个常见的面试问题,如果被问到了 ThreadLocal,则有可能在你介绍完它的作用.注意点等内容之后,再问你:ThreadLoca ...

  9. Python学习三:Python开发工具

    前面我们已经讲过如何打开IDLE,接下来我们就要用它来编写代码了 (1)在IDLE的主菜单上,选择File→New File菜单项,会打开一个新窗口,在该窗口中可以直接编写Python代码. (2)在 ...

最新文章

  1. 三相全桥电压型PWM逆变器(交直交)Simulink仿真
  2. Canonical 开源 MicroK8 | 云原生生态周报 Vol. 25
  3. java 4 7怎么算术运算_java四则运算
  4. 浅谈java内存分析和垃圾收集器
  5. 阿里云ECS开放批量创建实例接口,实现弹性资源的创建
  6. win8计算机用户名在哪里设置,windows8系统用户名微软ID和管理员账户概念详解
  7. 迎春舞会之三人组舞 vijos1061 动态规划
  8. 华为手机怎样恢复Android,华为手机恢复出厂设置的教程和方法
  9. 做公文流转的具体思路
  10. 生活中的 真、善、美
  11. oracle 设置 锁模式,oracle表锁的几种模式v$locked_object-locked_mode
  12. VS2019提示“未能完成操作,不支持此接口”
  13. 前端面试题,速看webP,把握住网页提速小细节!亲测可用!
  14. 透过容抗来看电容量和频率的关系
  15. java对接ntlm_通过NTLM获取信息.
  16. 实时识别骰子的点数_Halcon
  17. 加密解密-对称加密与非对称加密
  18. 【代数之美】线性方程组Ax=0的求解方法
  19. 怀念吗?那年下课回宿舍的日子
  20. nonebot2聊天机器人插件4:群聊与戳一戳响应chat

热门文章

  1. 关于鸿蒙系统 JS UI 框架源码的分析
  2. 用u盘制作u启动重装系统的步骤实现
  3. 在 Win7 下安装 KB4512506 补丁报告 0x80092004 错误的解决办法
  4. 简历里的期望薪资应该写多少比较合适呢
  5. XUL 用户界面语言介绍
  6. linux ssh服务状态,查看linux ssh服务信息及运行状态方法
  7. 倍福--授权文件拷贝
  8. 小红书投放怎么变现?品牌做小红书的变现效果好吗
  9. A/Btest小项目实操
  10. navicat连接postgresql时报错:authentication method 10 not supported