Thorntail 2.2.0提供從WildFly Swarm自動遷移的特性

weixin_33766168發表於2018-09-28

自6月底宣佈把WildFly Swarm2018.5.0改名Thorntail2.0.0以來,Red Hat在8月中旬以後的三個周裡釋出了Thorntail 2.1.0版本和2.2.0版本。除了許多Bug修復外,尤其是和MicroProfile相關的,新特性還包括:

\\
  • 符合MicroProfile 1.3\
  • 自動遷移過程\

由於修改了OpenTracing、Jaeger及日誌訊息程式碼,Red Hat記錄了可能帶來的一些程式碼破壞。

\\

背景

\\

傳統的WildFly Swarm以Red Hat的開源應用程式伺服器WildFly為基礎。和傳統的單體應用程式伺服器一樣,部署在WildFly上面的應用程式如下圖所示。

\\

682d98e6096464582b9d82646f0c7179.png

\\

另一方面,WildFly Swarm是WildFly的一個“解構”版本,開發人員只需要為打包成UberJar執行的應用程式選擇所需的API。下圖的應用程式僅使用了JAX-RS。

\\

525ab78ced884254654c41caa5847d79.png

\\

Thorntail 2.0.0

\\

在最近接受InfoQ採訪時,對於改名,Red Hat資深諮詢工程師Bob McWhirter指出:

\\
\

雖然“WildFly Swarm”這個名字已經使用多年,但我們注意到,“Swarm”已經被用爛了,許多公司和專案都在用它。此外,隨著我們把專案遷移到一個新的架構,在名字中包含“WildFly”開始變得沒有意義。在開始的時候,我們其實是核心WildFly專案的一個擴充套件,但是,隨著專案逐步成熟,我們需要自己的標識。出於這兩個原因,我們決定起一個新名。

\
\\

在名稱變更的同時,Red Hat放棄了最近比較流行的版本命名格式YYYY.MM.VV,回到了更為傳統的命名格式major.minor.micro。因此,就從WildFly Swarm 2018.5.0變成了Thorntail 2.0.0。

\\

根據Red Hat的文件,把一個Maven專案從WildFly Swarm遷移到Thorntail的過程如下:

\\
  • groupId中任何對org.wildfly.swarm的引用改成io.thorntail;\
  • 修改對WildFly Swarm版本的所有引用,如2018.5.02.0.0.Final;\
  • artifactId中任何對wildfly-swarm-plugin的引用改成thorntail-maven-plugin;\
  • 生成的UberJar包字尾由swarm.jar改成-thorntail.jar;\
  • Maven外掛名稱從wildfly-swarm:run改成thorntail:run。\

因此,下面的WildFly Swarm Java和Maven命令:

\\
\$ java -jar target/demo-0.1.0-swarm.jar\$ mvn wildfly-swarm:run\
\\

變成了下面的Thorntail命令:

\\
\$ java -jar target/demo-0.1.0-thorntail.jar\$ mvn thorntail:run\
\\

Thorntail 2.1.0

\\

Thorntail通過SmallRye保持了與MicroProfile 1.3的完全一致。SmallRye是一個社群驅動的新組織,提供MicroProfile規範的共享實現。Ken Finnigan是Red Hat的高階首席軟體工程師,他發起成立了SmallRye。在Red Hat最近發表的一篇博文中,他寫道:

\\
\

MicroProfile發展迅速,從兩年前宣佈以來已經有了很大的發展。跟蹤規範的快速發展以及與之匹配的實現需要所有供應商付出大量的精力,因此,Ken提議,把這些實現工作的公共部分置入一個供應商無關的MicroProfile實現中,這個專案的名字就是SmallRye。

\\

smallrye.io網站上,你可以看到,這個社群驅動的專案做得很好;所有MicroProfile規範現在都有了它們自己的實現。

\
\\

GitHub上提供了SmallRye的原始碼。

\\

2.1.0版本引入了一種Maven專案自動遷移機制,通過執行下面的Maven命令就可以把專案從WildFly Swarm遷移到Thorntail:

\\
\mvn io.thorntail:thorntail-maven-plugin:2.1.0.Final:migrate-from-wildfly-swarm\
\\

這將把所有groupIdartifactId引用從WildFly Swarm修改為Thorntail,包括相應的版本號。

\\
\\u0026lt;properties\u0026gt;\    \u0026lt;version.wildfly.swarm\u0026gt;2018.5.0\u0026lt;/version.wildfly.swarm\u0026gt;\    \u0026lt;maven.compiler.source\u0026gt;1.8\u0026lt;/maven.compiler.source\u0026gt;\    \u0026lt;maven.compiler.target\u0026gt;1.8\u0026lt;/maven.compiler.target\u0026gt;\\u0026lt;/properties\u0026gt;\\\u0026lt;dependencyManagement\u0026gt;\    \u0026lt;dependencies\u0026gt;\        \u0026lt;dependency\u0026gt;\            \u0026lt;groupId\u0026gt;org.wildfly.swarm\u0026lt;/groupId\u0026gt;\            \u0026lt;artifactId\u0026gt;bom\u0026lt;/artifactId\u0026gt;\            \u0026lt;version\u0026gt;${version.wildfly.swarm}\u0026lt;/version\u0026gt;\            \u0026lt;scope\u0026gt;import\u0026lt;/scope\u0026gt;\            \u0026lt;type\u0026gt;pom\u0026lt;/type\u0026gt;\        \u0026lt;/dependency\u0026gt;\    \u0026lt;/dependencies\u0026gt;\\u0026lt;/dependencyManagement\u0026gt;
\\\\
\\u0026lt;properties\u0026gt;\    \u0026lt;version.wildfly.swarm\u0026gt;2.1.0.Final\u0026lt;/version.wildfly.swarm\u0026gt;\    \u0026lt;maven.compiler.source\u0026gt;1.8\u0026lt;/maven.compiler.source\u0026gt;\    \u0026lt;maven.compiler.target\u0026gt;1.8\u0026lt;/maven.compiler.target\u0026gt;\\u0026lt;/properties\u0026gt;\\\u0026lt;dependencyManagement\u0026gt;\    \u0026lt;dependencies\u0026gt;\        \u0026lt;dependency\u0026gt;\            \u0026lt;groupId\u0026gt;io.thorntail\u0026lt;/groupId\u0026gt;\            \u0026lt;artifactId\u0026gt;bom\u0026lt;/artifactId\u0026gt;\            \u0026lt;version\u0026gt;${version.wildfly.swarm}\u0026lt;/version\u0026gt;\            \u0026lt;scope\u0026gt;import\u0026lt;/scope\u0026gt;\            \u0026lt;type\u0026gt;pom\u0026lt;/type\u0026gt;\        \u0026lt;/dependency\u0026gt;\    \u0026lt;/dependencies\u0026gt;\\u0026lt;/dependencyManagement\u0026gt;
\\

JaegerOpen Tracing中有一項修改可能帶來程式碼破壞。之前,把Jaeger新增到專案意味著把MicroProfile的Open Tracing包含進來。然而,2.1.0版本為了更好的支援Open Tracing,把它從Jaeger解耦了。正如釋出宣告中所說的那樣:

\\
\

現在,jaeger部分只用於提供跟蹤程式配置。你需要手工引入跟蹤部分;可以是以前的opentracing,也可以是新的microprofile-opentracing

\\

如果你之前依賴jaeger部分,而不是opentracing部分,那麼你必須顯式新增對opentracing部分的依賴才能保證同樣的行為。

\
\\

Thorntail 2.2.0

\\

最新版本修復了許多Bug,尤其是和MicroProfile APIs、MetricsJWTOpenAPIRest Client相關的。

\\

2.2.0版本引入了新的日誌訊息程式碼,以反映Thorntail的命名變化。之前的WFSWARMnnnnnWFSxxxnnnnn現在成了THORNnnnnnTTxxxnnnnn。數值程式碼保持不變。對於使用解析器搜尋舊日誌程式碼的開發人員而言,這是唯一的破壞性修改。

\\

新標誌

\\

他們故意延遲Thorntail新標誌的釋出。McWhirter在最近接受InfoQ採訪時解釋說:

\\
\

該標誌目前正由傑出的JBoss.org設計團隊進行設計。我們希望在接下來幾周內可以有幾個候選。考慮到Red Hat峰會,我們希望在釋出標誌之前釋出名稱,再者,我們也希望推廣新的v4.x概念驗證架構。

\
\\

等待已經結束,因為新標誌已於2018年9月17日釋出:

\\

6d46c0b96598f43f8476497fb709e44c.jpg

\\

相關資源

\\

檢視英文原文:Thorntail 2.2.0 Features Automated Migration from WildFly Swarm

相關文章