把環境配好之後Seam的例子也運行起來了看了seam_reference第一章中如下幾個例子講解
the registration example
the messages example
the todo list example
the numberguess example
又在網站上找了seam_reference的中文文檔主要看了《the contextual component model》一章看完以後感覺Seam最核心的地方就是其contextual component model了不過看完這一章以後只是對Seam有個大概的了解對其具體的內容細節還缺乏進一步的了解對其優點缺點也缺乏進一步的認識
然後又找到了《Seam in Action》的電子書看了一點之後還是覺得這本電子書寫得好內容組織的很好不象seam_reference後面的章節僅僅是羅列seam的各項功能
今天把Seam in Action的第一章草草看了一遍將第一章講述的內容總結如下
什麼是Seam
在Seam in Action中沒有將Seam稱之為web framework而是將其稱為application stackSeam將Java EE中的EJBJSFJPA/HibernateJAAS等技術融合在一起提供了更容易使用的方式比如conversationpage flowsbuisness precessesrulebased securityJavaScript(Ajax) remotingPDF renderingemail組合chartingfile uploadsGroovy integration等用以簡化web開發
Seam的目標
簡化web開發
Seam如何集成各類技術
Seam集成了JSFJPA和POJO Component
在Seam中將EJB中的Session Bean作為JSF的managed bean直接將表現層和業務層銜接在一起使得Session Bean可以直接訪問web相關數據比如requestsessionapplicationJSF的FacesMessageComponent Tree等而在不使用Seam時一般都是使用JSF back bean來作為表現層和業務層之間的中介
使用annotation中的@Name標注替代了JSF的facesconfigxml中關於managed bean的配置
Seam不一定必須使用EJB和JPA也可以使用POJOHibernate作為替代如下圖
上下文相關的組件模型(Seam中的核心概念)
Seam提供了種類型的上下文其中屬於Seam特有的兩種上下文類型分別為Conversation ContextBusiness process Context
Seam提供了統一的組件注冊annotation異常配置方法攔截統一的EL表達式等功能其中Seam對其管理的組件攔截過程如下圖
Seam的核心競爭力
更好的JSF
增強的JSF
Seam對JSF最被認可的改進就是消除了在配置文件中聲明managed bean
Prerender page actions
Managed request parameters (for a given page)
Intelligent stateless and stateful navigation
Transparent JSF data model and data model selection handling
Finegrained exception handling
Pagelevel security (per view ID)
基於Annotation的表單驗證
Bookmarkable command links (solving the everything is a POST problem)
Entity converter for pick lists
Conversation controls
Support for preventing lazy initialization exceptions and nontransactional data access in the view
消除了連接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 ContextBusiness Process Context的基礎
get rich quick
Seam提供了兩種方式將Ajax集成到Seam應用中一種是使用具有Ajax特性的JSF組件如RichFaces和ICEFaces另一種是可以在浏覽器中使用JavaScript直接調用服務端的組件
Seam還提供了另外一種意義上的Rich即將PDFmail等功能集成到Seam應用中
提供了一個快速開發環境
代碼自動生成
熱部署
Seam調試頁面
不部署即可以進行單元測試
從目前我個人的理解來看Seam的作用與能力如下
Seam將EJB與JSF整合在一起消除了JSF與業務代碼之間的間隙直接將表現層與業務層銜接在一起
Seam提出了Conversation Context的概念將Stateful EJB引入到web開發中直接與Conversation Context對應
Seam提供了與Jbpmitextmail等一系列開源框架的整合對於需要使用的相關功能的用戶來說提供了便利性提供了開發工具的整合(Seam Gen與IDE)還可以自動生成部分代碼
但由於Seam整合了如此多的框架帶來的一個最大的缺點學習曲線陡峭在SSH非常流行的今天需要面對很多新技術(JSFEJBJPA等)對於一個新手來說難度比較大如果想使Seam被更多的開發人員使用必須加強它的文檔目前的文檔還是太少了
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27996.html