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 {
三十五、minishell(3)
35.1 內容 在當前的 minishell 中,如果執行 date clear 命令等,minishell 會停止: 這是因為引入程序組的時候,mshell 放置在前臺程序組,同時之後在子程序中又建立了一個程序組,在程式碼中,第二個程序組在沒有將其設定為前臺程序組之前,一直是後臺程序組。