您好,登錄后才能下訂單哦!
Oracle推出輕量級Java微服務框架Helidon的示例分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
近日,Oracle 推出 了一個新的開源框架 Helidon ,該項目是一個用于創建基于微服務的應用程序的Java庫集合。和 Payara Micro 、 Thorntail (之前的 WildFly Swarm )、 OpenLiberty 、TomEE 等項目一樣,該項目也加入了MicroProfile家族。
Helidon最初被命名為J4C(Java for Cloud),其設計以簡單、快速為目標,它包括兩個版本:Helidon SE 和 Helidon MP 。Helidon SE提供了創建微服務的三個核心API:Web服務器、配置和安全,用于構建基于微服務的應用程序,不需要應用服務器。Helidon MP支持用于構建基于微服務的應用程序的MicroProfile 1.1規范。
受NodeJS和其他Java框架的啟發,Helidon的Web服務器是一個異步、反應性API,運行在 Netty 之上。 WebServer 接口包括對配置、路由、錯誤處理以及構建 度量和健康 端點的支持。
下面的示例代碼演示了如何啟動一個簡單的Helidon Web服務器,在一個隨機可用的端口上顯示“ It works! ”:
// 在一個隨機可用的端口上啟動服務器 public void startWebServerUsingRandomPort() throws Exception { WebServer webServer = WebServer .create(Routing.builder() .any((req,res) -> res.send("It works!" + "\n")) .build()) .start() .toCompletableFuture() .get(10,TimeUnit.SECONDS); System.out.println("Server started at: http://localhost:" + webServer.port() + "\n"); webServer.shutdown().toCompletableFuture(); }
配置組件 Config 加載和處理鍵/值格式的配置屬性。在默認情況下,配置屬性將從定義好的 application.properties 或 application.yaml 文件中讀取,它們位于 /src/main/resources 目錄下。
下面的示例代碼基于前面的例子構建,它演示了如何使用 Config ,通過讀取 applications.yaml 文件獲得指定的端口啟動Web服務器。
// application.yaml server: port: 8080 host: 0.0.0.0 // 在application.yaml預定義的端口上啟動服務器 public void startWebServerUsingDefinedPort() throws Exception { Config config = Config.create(); ServerConfiguration serverConfig = ServerConfiguration.fromConfig(config.get("server")); WebServer webServer = WebServer .create(serverConfig,Routing.builder() .any((req,res) -> res.send("It works!" + "\n")) .build()) .start() .toCompletableFuture() .get(10,TimeUnit.SECONDS); System.out.println("Server started at: http://localhost:" + webServer.port() + "\n"); webServer.shutdown().toCompletableFuture(); }
類 Security 為身份驗證、授權和審計提供支持。已經有許多用于Helidon應用程序的 安全提供程序 實現。有三種方法可以將安全性內置到Helidon應用程序中:從構建器、通過配置或者是前兩者的結合。
下面的示例代碼演示了如何構建 Security 實例、使用 Config 獲取用戶身份驗證(使用加密密碼)并顯示服務器時間。
// application.yaml http-basic-auth: users: login: "mpredli" password: "${CLEAR=somePassword}" roles: ["user","admin"] Config config = Config.create(); Security security = Security.builder() .config(config) .addProvider(...) .build(); String user = config.get("http-basic-auth.users.login").asString(); String password = config.get("http-basic-auth.users.password").asString(); System.out.println("\n"); System.out.println("INFO: user = " + user); System.out.println("INFO: password = " + password); SecurityTime time = SecurityTime.builder().build(); time = security.getServerTime(); System.out.println("INFO: server time = " + time.toString()); System.out.println("\n");
GitHub
提供了更詳盡的安全示例。
下面的架構圖顯示了Helidon SE和Helidon MP的關系。
下圖說明了Helidon SE和Helidon MP所屬的微服務框架類別。
Helidon提供了 快速入門示例 來演示Helidon SE和Helidon MP之間的區別。
下面的Maven和Java命令將生成并打包Helidon SE示例,使用Helidon的Web服務器創建一個REST服務。
$ mvn archetype:generate -DinteractiveMode=false \ -DarchetypeGroupId=io.helidon.archetypes \ -DarchetypeArtifactId=helidon-quickstart-se \ -DarchetypeVersion=0.10.1 \ -DgroupId=io.helidon.examples \ -DartifactId=quickstart-se \ -Dpackage=io.helidon.examples.quickstart.se $ cd quickstart-se $ mvn package $ java -jar target/quickstart-se.jar
下面的Maven和Java命令將生成并打包Helidon MP示例,使用MicroProfile的JAX-RS API創建一個REST服務。
$ mvn archetype:generate -DinteractiveMode=false \ -DarchetypeGroupId=io.helidon.archetypes \ -DarchetypeArtifactId=helidon-quickstart-mp \ -DarchetypeVersion=0.10.1 \ -DgroupId=io.helidon.examples \ -DartifactId=quickstart-mp \ -Dpackage=io.helidon.examples.quickstart.mp $ cd quickstart-mp $ mvn package $ java -jar target/quickstart-mp.jar
一旦服務器開始運行,就可以執行下面的命令
在 GitHub 上可以找到整個Helidon項目。
Oracle的高級軟件開發經理 Dmitry Kornilov 向infoQ介紹了這個新項目。
在此我向大家推薦一個架構學習交流君羊。交流學習君羊:821169538 里面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化、分布式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多。
Dmitry Kornilov:有關Helidon的工作已經開始一段時間了。當創建云服務的微服務體系結構開始變得非常流行時,開發體驗也需要改變。Java EE是一種穩定的技術,但是它有很多遺留代碼。我們沒有在Java EE上構建微服務,我們意識到,我們需要一個從頭開始設計的構建微服務的新框架。Helidon就是這樣出現的。
InfoQ:與OpenLiberty、Thorntail、Payara Micro和TomEE等其他MicroProfile實現相比,Helidon有什么獨特之處?
Kornilov:Helidon不僅僅是一個MicroProfile實現。它有兩個版本:Helidon SE和Helidon MP。
Helidon SE構成了Helidon的核心。它是一組輕量級的庫,其中的庫可以單獨使用,但如果一起使用,就可以滿足開發人員創建微服務的基本需求:配置、安全和Web服務器。它帶來了一種開發人員喜歡的更現代的反應性方法。我們總是盡力明確:不使用注入“魔法”,使Helidon SE應用程序易于調試。沒有特殊的jar格式,沒有特殊的類加載器。你的應用程序只是一個普通的Java SE應用程序。這也意味著,它與所有IDE兼容,不需要特殊的插件。
Helidon MP是我們的MicroProfile實現,它以Helidon SE為基礎構建——它不是派生自某個應用服務器。因此,沒有部署模型,沒有Java EE打包,沒有你不需要的額外的東西。
Kornilov:Helidon的開發在一段時間之前就開始了,我們決定堅持使用當時最新的MicroProfile版本。我們正在不斷地改進Helidon,對新的MicroProfile版本的支持很快就會到來。
InfoQ:接下來,尤其是在Jakarta EE支持和MicroProfile規范較新版本的支持方面,Helidon將開展哪些工作?
Kornilov:我已經提到過,我們正致力于對MicroProfile較新版本的支持。當新的Jakarta EE 規范出現時,我們將參與它們的開發并在Helidon中支持它們。此外,我們計劃向Helidon添加Oracle Cloud集成特性、HTTP客戶端支持、項目啟動器Web應用,并不斷改進我們的示例和文檔。
看完上述內容,你們掌握Oracle推出輕量級Java微服務框架Helidon的示例分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。