1. 程式人生 > >ballerina 學習 三十一 擴充套件開發(二)

ballerina 學習 三十一 擴充套件開發(二)

上篇說了使用ballerina 語言開發擴充套件模組,對於註解型別的我們是需要使用java 語言進行
開發的

註解擴充套件外掛的使用

這個註解是呼叫方法之後,會生成一個文字檔案

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 擴充套件是一個比較有價值的參考專案

參考資料

相關推薦

ballerina 學習 擴充套件開發

上篇說了使用ballerina 語言開發擴充套件模組,對於註解型別的我們是需要使用java 語言進行 開發的 註解擴充套件外掛的使用 這個註解是呼叫方法之後,會生成一個文字檔案 import ballerina/http; import ballerinax/hello; @hell

Go語言學習筆記: 切片slice

操作 容量 方括號 一個 組類型 學習 中學 slice 修改 Go語言學習筆記十一: 切片(slice) 切片這個概念我是從python語言中學到的,當時感覺這個東西真的比較好用。不像java語言寫起來就比較繁瑣。不過我覺得未來java語法也會支持的。 定義切片 切片可以

Java基礎學習筆記六 集合框架

first 哈希 cat etag 基於 col 容器 處的 新元素 List List接口的特點: 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那麽集合中,元素的存儲就是按照11、22、33的順序完成的。 它是一個帶有索引的集合,通過索引就

Esper學習五:Pattern

轉載請註明出處:http://blog.csdn.net/luonanqin        上一篇開始了新一輪語法——Pattern的講解,一開始為大家普及了幾個基礎知識,其中有說到操作符。當時只是把它們都列舉出來了,所以今天這篇就是專門詳解這些操作符的,但是由於篇幅限制

ballerina 學習 擴充套件開發

ballerina 主要是分為兩大類 基於ballerina 語言開發的,一般是客戶端的connector 使用java語言開發的(類似的基於jvm的都可以),一般是註解以及進行構件生成 ballerina 語言開發說明 是一個ballerian 的包 建立一個物件包含了init 、ge

學習

linux學習七周五次課(3月23日)10.19 iptables規則備份和恢復10.20 firewalld的9個zone10.21 firewalld關於zone的操作10.22 firewalld關於service的操作iptables規則備份和恢復firewalld的9個zonezone是一個規則集f

學習Android TV/盒子開發

TV、機頂盒開發除錯不能像手機一樣通過USB線連線除錯,可通過ADB連線除錯 連線電視 adb connect 10.74.84.199 1 2 連線後就可以開始開發除錯了! 斷開連線 // 斷開某個裝置 adb disconnect 10.74.84

【Katalon學習】Record Web Utility

記錄一個新的測試用例 Record a New Test Case 不開啟任何測試用例,點選Web Record圖示開啟Web記錄器 Katalon Studio預設瀏覽器Chrome的圖示顯示在右上角,但你可以改變這種預設瀏覽器的Preferences → Katalon

ballerina 學習 編寫安全的程式

ballerina編譯器已經集成了部分安全檢測,在編譯時可以幫助我們生成錯誤提示,同時ballerina 標準庫 已經對於常見漏洞高發的地方做了很好的處理,當我們編寫了有安全隱患的程式碼,編譯器就已經提示給 我們了。 常見的問題 sql 注入 path 操作 file 操作 未授

吳恩達機器學習總結:第 降維PCA大綱摘要及課後作業

為了更好的學習,充分複習自己學習的知識,總結課內重要知識點,每次完成作業後都會更博。總結1.動機I:資料壓縮(1)壓縮    a.加速演算法    b.減小資料空間    c.2維降為1維例子    d.3維降為2維例子       e.在實際中,我們正常會將1000維將為1

、字典:字典的遍歷

文章目錄 (一)、如何遍歷字典所有的鍵-值對 (二)、如何遍歷字典中所有的鍵 (三)、如何遍歷字典所有的值 (四)、如何按照順序遍歷字典所有鍵 (

Python-資料結構與演算法、字典對映——基於兩種不同的底層實現

保證一週更兩篇吧,以此來督促自己好好的學習!程式碼的很多地方我都給予了詳細的解釋,幫助理解。好了,幹就完了~加油! 宣告:本python資料結構與演算法是imooc上liuyubobobo老師java資料結構的python改寫,並添加了一些自己的理解和新的東西,liuyubobobo

第二章 NoSQL

21.9 redis介紹 21.10 redis安裝 daemonize yes 表示redis為後臺啟動,終端繼續做其他事情logfile "/var/log/redis.log" 定義redis的日誌路徑dir /data/redis 定義red

第二章 NoSQL

21.1 NoSQL介紹 21.2 memcached介紹 資料結構簡單(k-v),資料存放在記憶體裡。memcached 不支援持久化,資料落地。每當memcached服務重啟或者重啟伺服器,資料就會丟失。但可以定時來備份來讓資料落地 2

SpringBoot 學習-restful api 開發

SpringBoot 開發resful api 比之前mvc restful api 更為快捷和簡單。正所謂 沒有對比就沒有傷害,在介紹SpringBoot的寫法之前,我們先看看SpringMVC 是如果實現 restful api的。在這裡我將寫一個使用者的增刪該查 res

Spring學習之Spring種裝配機制:顯示裝配bean

  今天我們介紹一下Spring三種裝配機制中的另外兩種裝配方式:JavaConfig和XML配置,這兩種方式區別於自動化裝配方式都屬於顯示裝配。 1、Java程式碼裝配bean 首先,我們通過在Config類中使用@Bean註解來宣告bean; @Bean註

【轉】交換機開發—— 層交換機報文轉發過程

如圖所示,假如主機A想訪問主機B,首先主機A會將自己的IP地址和子網掩碼做與操作,得出網路地址(如:Host-A的IP地址100.1.1.2與自身掩碼255.255.255.0做與操作後,得到的網路號是100.1.1.0).然後判斷目的IP地址(即Host-B的IP地址)

JavaWeb學習總結:Servlet開發

一、ServletConfig講解 1.1、配置Servlet初始化引數   在Servlet的配置檔案web.xml中,可以使用一個或多個<init-param>標籤為servlet配置一些初始化引數。 例如: 1 <servlet&g

Spring 學習 Bean 的作用域@Scope

@Scope 原始碼 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Scope {

五、minishell3

35.1 內容   在當前的 minishell 中,如果執行 date clear 命令等,minishell 會停止:      這是因為引入程序組的時候,mshell 放置在前臺程序組,同時之後在子程序中又建立了一個程序組,在程式碼中,第二個程序組在沒有將其設定為前臺程序組之前,一直是後臺程序組。