溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用Spring Web Flow和Terracotta搭建Web應(yīng)用

發(fā)布時(shí)間:2021-11-17 15:25:20 來源:億速云 閱讀:166 作者:小新 欄目:編程語言

小編給大家分享一下怎么用Spring Web Flow和Terracotta搭建Web應(yīng)用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

什么是Spring Web Flow?

Spring Web Flow是Spring Framework中的web應(yīng)用組件,它提供了一種編寫有狀態(tài)和基于會話的web應(yīng)用的簡便手段。Spring Web Flow 使得邏輯流程成為web應(yīng)用中的一等公民,它能讓你定義為自包含模塊,以獨(dú)立于應(yīng)用的其它部分來配置和重用。它不依賴于框架從而能夠方便的與可選的web應(yīng)用框架一同使用,比如Spring MVC、Struts或者JSF等。

頁面流轉(zhuǎn)使用一種領(lǐng)域定義語言(DSL)來配置,這個語言專門開發(fā)用來定義和組合頁面流轉(zhuǎn)。目前的實(shí)現(xiàn)方式是XML和Java.

Spring Web Flow引入了能滿足多種用戶案例和需求的幾種有狀態(tài)數(shù)據(jù)域:request、flash、flow和conversation,這給你開發(fā)有狀態(tài)web應(yīng)用提供了很大的靈活性和能力。

這里是1.0 release中最有趣特性的快速概要:

  • 在一個地方而不是把邏輯分散在很多地方來定義應(yīng)用任務(wù)的所有控制邏輯,比如一個搜索流程。

  • 把簡單的流轉(zhuǎn)組合在一起來創(chuàng)建富控制模塊。

  • 使用自然和面向?qū)ο蟮木€性編程模型,而不是冗長的的if/else塊來定義嚴(yán)格的用戶導(dǎo)航規(guī)則。

  • 但流轉(zhuǎn)結(jié)束或過期時(shí)自動清除你在流轉(zhuǎn)執(zhí)行中分配的內(nèi)存。

  • 在使用你選擇的基礎(chǔ)web框架的Servlet環(huán)境中Deploy一個可執(zhí)行的流轉(zhuǎn)。

  • 改變web框架(比如Struts、Spring MVC、JSF及其它)而不用修改流轉(zhuǎn)定義。

  • 和環(huán)境一起改變而不需要修改你的流轉(zhuǎn)定義, 比如從JUnit測試到Portlet。

  • 開發(fā)時(shí)在不重啟容器的情況下不斷完善你的應(yīng)用導(dǎo)航規(guī)則。

  • 自動正確響應(yīng)瀏覽器按鈕(后退、前進(jìn)、刷新)而不需要定制編程。

  • 在4個受管理域中存儲任務(wù)數(shù)據(jù):request、flash、flow、和、conversation等,每個都有自己的獨(dú)特語義。

  • 脫離容器單獨(dú)測試流轉(zhuǎn)。能在部署前確保應(yīng)用控制邏輯能正常運(yùn)作。

  • 使用Spring IDE 2.0進(jìn)行可視化編輯你的流轉(zhuǎn)導(dǎo)航邏輯圖

 什么是Terracotta for Spring?

Terracotta for Spring是基于Spring應(yīng)用的運(yùn)行時(shí),它為Spring 應(yīng)用提供了透明的高性能集群支持,對應(yīng)用代碼和部署及配置流程影響都很小。它通過在應(yīng)用下面的堆級別進(jìn)行集群而不是直接集群應(yīng)用。

這讓開發(fā)者能夠開發(fā)與無狀態(tài)方式不同的單節(jié)點(diǎn)有狀態(tài)Spring應(yīng)用。這使得在需要擴(kuò)展的應(yīng)用開始設(shè)計(jì)時(shí)不考慮集群。而在應(yīng)用需要擴(kuò)展或者要保證搞可用性和故障恢復(fù)時(shí),他們只需要在Terracotta 配置文件中定義哪些Spring應(yīng)用上下文中的beans需要進(jìn)行集群。Terracotta for Spring 使得應(yīng)用能夠被自動和透明的集群,還保證在集群間的語義和單節(jié)點(diǎn)一樣。

對于Spring Web Flow來說,這實(shí)際上更簡單。用戶為了獲得web應(yīng)用的狀態(tài)和持續(xù)倉庫的集群能力, 只需要在Terracotta配置文件中把特定的web應(yīng)用聲明為啟用“session-support”。(詳細(xì)內(nèi)容見下面的章節(jié)“聲明式配置”)

從宏觀上看,Terracotta for Spring提供了:

·         HTTP session狀態(tài)的集群。保證Spring Web Flow中的用戶狀態(tài)和擴(kuò)展倉庫或放入HTTP session的其它狀態(tài)的高可用性和故障恢復(fù)能力。

·         Spring bean的集群。Springbean的生命周期語義和域在集群間被保存,它們在“邏輯”上相同的ApplicationContext中。目前能被集群的bean類型是singletonsession scoped. 用戶可以聲明式配置哪個application contexts中的哪個bean需要被集群。

·         透明集群POJO。 不需要修改已有的代碼,甚至不需要源代碼。應(yīng)用基于很少的聲明式XML 配置文件,在載入期透明的生效。Terracotta for Spring不需要實(shí)現(xiàn)Serializable, Externalizable或其它接口的類。能這樣實(shí)現(xiàn)的原因它并沒有使用序列化,而只是將實(shí)際的差量和已經(jīng)改變了的數(shù)據(jù)傳輸給當(dāng)前需要的節(jié)點(diǎn) (lazily)。

虛擬內(nèi)存管理。它也提供分布式垃圾收集和虛擬堆功能。比如,由于物理內(nèi)存在需要時(shí)被換入換出,它能在一個4G RAM的機(jī)器上運(yùn)行需要200G堆的Web應(yīng)用。 這也意味著你不需要關(guān)心Spring Web Flow 會話數(shù)據(jù)的大小是否超過了物理堆大小。

看完了這篇文章,相信你對“怎么用Spring Web Flow和Terracotta搭建Web應(yīng)用”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI