把環境配好之後,Seam的例子也運行起來了,看了seam_reference第一章中如下幾個例子講解:
the registration example |
又在網站上找了seam_reference2.0的中文文檔,主要看了《the contextual component model》一章,看完以後感覺Seam最核心的地方就是其contextual component model了,不過看完這一章以後只是對Seam有個大概的了解,對其具體的內容,細節還缺乏進一步的了解,對其優點、缺點也缺乏進一步的認識.
然後又找到了《Seam in Action》的電子書,看了一點之後還是覺得這本電子書寫得好,內容組織的很好,不象seam_reference後面的章節僅僅是羅列seam的各項功能.
今天把Seam in Action的第一章草草看了一遍,將第一章講述的內容總結如下:
1、什麼是Seam
在Seam in Action中,沒有將Seam稱之為web framework,而是將其稱為application stack.Seam將Java EE中的EJB3、JSF、JPA/Hibernate、JAAS等技術融合在一起,提供了更容易使用的方式,比如conversation、page flows、buisness precesses、rule-based security、JavaScript(Ajax) remoting、PDF rendering、email組合、charting、file uploads、Groovy integration等,用以簡化web開發.
2、Seam的目標
簡化web開發
3、Seam如何集成各類技術
Seam集成了JSF、JPA和POJO Component
在Seam中將EJB3.0中的Session Bean作為JSF的managed bean,直接將表現層和業務層銜接在一起,是的Session Bean可以直接訪問web相關數據,比如request、session、application、JSF的FacesMessage、Component Tree等.而在不使用Seam時,一般都是使用JSF back bean來作為表現層和業務層之間的中介.
使用annotation中的@Name標註替代了JSF的faces-config.xml中關於managed bean的配置.
Seam不一定必須使用EJB和JPA,也可以使用POJO、Hibernate作為替代.如下圖:
上下文相關的組件模型(Seam中的核心概念)
Seam提供了7種類型的上下文,其中屬於Seam特有的兩種上下文類型分別為:Conversation Context、Business process Context.
Seam提供了統一的組件註冊、annotation、異常配置、方法攔截、統一的EL表達式等功能.其中Seam對其管理的組件攔截過程如下圖:
4、Seam的核心競爭力
更好的JSF
增強的JSF
Seam對JSF最被認可的改進就是消除了在配置文件中聲明managed bean. |
消除了連接Bean(ELIMINATING CONNECTOR BEANS)
用一幅圖可以很好的說明這句話的含義
引入了有狀態的變數範圍(INTRODUCING STATEFUL VARIABLE SCOPES)
擴展的Persistence Context
Spring中提供了The Session In View Filter,是的persistence manage可以在一個請求中存在,避免了常見的LazyInitializationException.在Seam中,擴展的Persistence Context可以跨越多個請求.其實擴展的Persistence Context是Conversation Context、Business Process Context的基礎.
get rich quick
Seam提供了兩種方式將Ajax集成到Seam應用中,一種是使用具有Ajax特性的JSF組件,如RichFaces和ICEFaces,另一種是可以在瀏覽器中使用JavaScript直接調用服務端的組件.
Seam還提供了另外一種意義上的Rich,即將PDF、mail等功能集成到Seam應用中.
提供了一個快速開發環境
代碼自動生成
熱部署
Seam調試頁面
不部署即可以進行單元測試
從目前我個人的理解來看,Seam的作用與能力如下:
Seam將EJB3與JSF整合在一起,消除了JSF與業務代碼之間的間隙,直接將表現層與業務層銜接在一起
Seam提出了Conversation Context的概念,將Stateful EJB引入到web開發中,直接與Conversation Context對應
Seam提供了與Jbpm、itext、mail等一系列開源框架的整合,對於需要使用的相關功能的用戶來說,提供了便利性提供了開發工具的整合(Seam Gen與IDE),還可以自動生成部分代碼
但由於Seam整合了如此多的框架,帶來的一個最大的缺點:學習曲線陡峭,在SSH非常流行的今天,需要面對很多新技術(JSF、EJB3、JPA等),對於一個新手來說難度比較大,如果想使Seam被更多的開發人員使用,必須加強它的文檔,目前的文檔還是太少了.
[火星人 ] JBossSeam學習系列之二--什麼是JBossSeam已經有544次圍觀