從本文開始我將會開始一個全新系列的文章——《Seam系列》如果有關心我的博客的朋友應該知道早前一年多的時間我都使用Seam使用開發項目可以算得上是略有小成因此我很希望與大家分享一下Seam的經驗
為什麼要使用Seam
這個問題Seam的官方文檔以經做了很好的回答為了方便不喜歡看文檔的朋友(不過可以負責任地告訴你這不是一種好習慣! )如果你希望完整地了解一門技術反復閱讀文檔是必不可少的甚至可能需要查看源代碼當然這是對開源的技術而言)我將其中一些要點抽取出來
只有一種工具 Seam中的表現層組件和業務邏輯組件之間並沒有區別 你可以根據你設計的任何架構給應用程序進行分層而不是強制將你的應用程序邏輯硬塞進一個由你目前在使用的任何框架組合所強加給你的不適當的分層配置中
將JSF與EJB 整合 Seam將JSF和EJB的組件模型合二為一消除了膠合代碼使得開發者專注於業務問題
集成AJAX Seam支持兩個最好的開源的基於JSF的AJAX解決方案JBoss RichFaces和ICEfaces
將業務流程作為首要的基礎建築 Seam可以選擇通過jBPM提供透明的業務流程管理
聲明式狀態管理 聲明式應用程序狀態管理通過Seam定義的豐富的context model(上下文模型)而成為可能Bijection(雙向注入) Bijection(雙向注入)和IoC的不同之處在於它是動態的語境相關的以及雙向的
工作區(Workspace )管理和多窗口浏覽 Seam應用程序讓用戶自由地在多個浏覽器窗口中切換每個窗口都與一個不同的安全隔離的對話關聯
多些注解(Annotation)少些XML 這讓你擺脫了對繁瑣的JSF managed bean(JSF受管bean)的配置減少了所需的XML只剩下那些真正屬於XML的信息(JSF導航規則)
集成測試輕而易舉 Seam組件作為POJO天生就是可以進行單元測試的
規范也非盡善盡美 在規范中有許多漏洞(例如GET請求的JSF生命周期中的局限性)Seam修正了這些漏洞
Web應用程序不只是服務HTML頁面 Seam為持久化集成了JPA和Hibernate 為輕量化的異步性集成了EJB Timer Service和Quartz為工作流集成了jBPM為業務規則集成了JBoss規則為電子郵件集成了Meldware Mail為完整的文本搜索集成了Hibernate Search和Lucene為消息集成了JMS以及為頁面片斷捕捉集成了JBoss Cache
准備開發環境
要方便地編寫Seam應用我要做一些准備工作
下載Seam框架 大家可以通過以下鏈接下載建議大家下載最新的GA版本解壓到本地目錄如dSeamDev
下載JBoss應用服務器 大家可以通過以下鏈接下載建議大家下載最新GA的版本解壓到本地目錄如dSeamDev
下載Ecplise開發環境 大家可以通過以下鏈接下載?file=/technology/epp/downloads/release/ganymede/SR/eclipsejeeganymedeSRwinzip解壓到本地目錄如dSeamDev
下載JBoss Tools插件 大家可以通過以下鏈接下載?groupname=jboss&filename=JBossToolsALLwinCRRzip&use_mirror=biznetnetworks解壓到本地目錄如dSeamDev因為這是一個RC版本大家可以通過LINK的方式將其安裝到Eclispe這樣可以方便大家升級到正式版(將文件夾替換即可)具體步驟
開打Eclipse下的links文件夾如dSeamDeveclipselinks
新建後綴名為*link的文件如JBossToolslink
向文件加入內容如path=d/SeamDev/JBossToolsCR保存並關閉文件
第一個Seam應用
在完成上述的准備工作後大家就可以通過Eclipse的向導生成一個簡單的應用啦
運行Eclipse選擇菜單Window>Perferences在出現對話框中在左上角的輸入框中輸入seam如圖所示

點擊Add在出現的New Seam Runtime的對話框中點擊Browse選擇Seam的解壓路徑如DSeamDevjbossseamGA在Version下拉菜單中選擇點擊Finish

點擊Perferences對話框中的OK關閉對話框
點擊菜單File>New>Project在輸入框中輸入Seam點擊Seam Web Project點擊Next如下圖所示

在Project Name輸入Hello點擊Target Runtime中的New
在出現的New Server Runtime Environment對話框中展開JBoss a division of Red Hat選擇JBoss Runtime點擊Next如下圖所示

在出現的對話框中點擊Browse選擇JBoss解壓的路徑點擊Finish
回到New Seam Project對話框點擊Target Server中的New
在出現的對話框中選擇JBoss AS 點擊Finish如圖所示

再次回到New Seam Project在Configuration中的下拉菜單中選擇Dynamic Web Project with Seam (technical preview)點擊Next如下圖所示

在Web Module對話框再點擊Next
在JSF Capabilities對話框再點擊Next
在Seam Facet對話框中的Deploy As中選擇EAR在Connection Profile中點擊New
在Connection Profile Types中選擇HSQLDB修改Name為HelloDB點擊Next
在出現的對話框中點擊圖標
在出現的對話框中選擇HSQLDB JDBC Driver如下圖所示

點擊Jar List選擇hsqldbjar點擊Remove JAR/Zip
點擊Add JAR/Zip在文件選擇對話框中選擇Seam文件夾下的lib下的hsqldbjar路徑如dSeamDevjbossseamGAlibhsqldbjar點擊OK
在Database輸入框中輸入HelloDB選擇DB Location路徑如FWorkspaceBlogJavaHSQLDBHelloDB可以點擊Test Connection如果設置正確應該會出現Success對話框點擊OK再點擊Finish

回到New Web Project對話框如進行下圖所示設置後點擊Finish

在可能出現的切換對話框中點擊OK
通過上述步驟我們已經新建一個Seam工程在Eclipse的Project Explorer窗口中你可能見到有紅色的交叉提示錯誤點擊屏幕下方的Problems窗口雙擊錯誤提示打開pagesxml文件如下圖所示

將出錯的loglevel改為logLevel即可消除錯誤保存文件
點擊屏幕下方的JBoss Server View開啟JBoss服務器如下圖所示

打開浏覽器鍵//localhost/hello/你將會看到如下圖所示頁面
點擊Login在Username鍵入admin再點擊Login可以成功登陸
小結
通過上述的步驟我們已經創建了一個簡單Seam應用這個應用正所謂是麻雀必小五髒俱全包括WEB的常用的布局圖片樣式表和簡單的登陸實現錯誤處理等
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28324.html