JSF結合Richfaces使用時的一種數據庫分頁方式
摘要: 在JSF和Richfaces的官方示例里面沒發現正經的數據庫分頁示例,于是自己輪了一個,還算比較滿意,分享出來。
struts等框架,視圖(jsp、freemarker等)直接獲取action中準備好的數據結果集合,請求下一頁數據的時候,同樣后臺action處理請求,把action中的數據集合用新的這一頁數據替換掉,然后渲染頁面,從而實現分頁。每次請求action的處理過程可以拿到頁號等信息,所以在action調用service的時候就可以使用這些信息,調用相應的方法做分頁數據查詢。
JSF結合Richfaces做這個事情和Struts等框架有有很大的區別。
閱讀全文
Hazelcast作為hibernate緩存和業務緩存
摘要: 做去皮兒網(http://www.qupier.com),內容管理是一個系統,前端網站是一個系統,這兩個系統之間獨立部署,但是緩存要能夠互通。例如后臺修改了某個消息類型的說明,在前段網站上要能夠展現出來(使用了hibernate的查詢緩存)。其他的一些場景也許要緩存,例如網站的shiro權限信息緩存,不過這個不需要和后端系統互通。但是既然開搞,也不好意思再掛著ehcache。于是一并升級。
前面一篇日志各種碰壁后,終于找到了理論上能夠實現功能的兩個產品:gemfire和hazelcast。于是,開始嘗試。
閱讀全文
找集中式緩存做hibernate second level cache和業務緩存,失敗
摘要: 依然,先發廣告:去皮兒網(http://www.qupier.com),每月26日通知你是否中簽。已經推出廣州的搖號結果通知了。
之前做業務系統,緩存用的是ehcache,集群的時候用multicast廣播通知。隨著節點的增多,希望把整個緩存切換到集中式緩存上來。折騰了兩天,各種碰壁。
閱讀全文
基于Spring實現seam形式的事件機制
摘要: 照例先做廣告:去皮兒網(http://www.qupier.com),每月26日通知你是否中簽。很快要退出廣州的搖號結果通知了。
Seam的Events用的很舒服,spring提供的事件機制太羅嗦,所以起了念頭,著這思路移植一下。最終效果如下:
//發布事件
Events.instance().fire(eventName,arg1,arg2.);
//發布異步事件
Events.instance().fireAsynchronous(eventName,arg1,arg2.);
//在事務中,發布當事務成功commit時觸發的事件
Events.instance().fireOnTransactionSuccess(eventName,arg1,arg2.);
//在事務中,發布當事務完成(commit/rollback)時觸發的事件
Events.instance().fireOnTransactionCompletion(eventName,arg1,arg2
閱讀全文
建立功能級別的組件
摘要: 先做個廣告,去皮兒網,可以每月26日通知你是否搖號中簽。http://www.qupier.com
一直以來,組件一直都建立在技術的層面上。由于業務的復雜多變,似乎沒有人想著把業務部分也做成可重用的組件。
我們團隊在過去的兩年里面在這個方面做了一些常識,寫出來供網友參考、拍磚。
閱讀全文
走在組件化的路上(七)——JSF的優勢之使用View作用域的Action
摘要: 在以往的應用開發過程中,后端的業務組件(Action/Service/Dao),可以被設置為幾種作用域:request、session、application。我們不可能把與每次請求關系很強的一些信息(例如某個列表頁面要列出來的數據集合)簡單的放到session里面去,這就導致了每次請求之間的大部分數據是不可能共享的。使用JSF,我們實現了一種叫做view的作用域,在不同的請求之間共享信息。
閱讀全文
走在組件化的路上(六)——JSF的優勢之自定義組件與模塊化
摘要: JSF的很多文檔上面說,要建立一個自定義組件,需要定義繼承自UIComponentBase之類的類,然后寫decode/encode方法等等,一大套內容,很復雜。幸好我們有其他的辦法。其實定義一個組件在大多數情況下是不用去寫這樣的代碼的。本節的內容是一個選擇true/false兩個值得下拉框組件。定義一個這樣的組件需要做如下工作:
閱讀全文
走在組件化的路上(五)——JSF的優勢之從url到頁面r
摘要: 我看到的若干mvc框架在展現一個包含動態數據內容的頁面的時候,都是這樣做的:請求/xx.do,到達某個action,執行配置好或者根據url映射到的某個方法,初始化數據,放到某個context里面(例如Request,或者struts用的ognl的context),然后根據配置或者規則,forward到某頁面,然后展現。
這樣做的好處是強制性的分離了展現和邏輯,缺點是多了若干配置,不自然。
JSF的路子和asp/php是一樣的,你請求/a.xhtml,那么,ok,加載/a.xhtml文件。例如a.xhtml主體內容如下:
閱讀全文
走在組件化的路上(四)——JSF的優勢之了解前端狀態
摘要: 先補充一下上一篇留下的尾巴:最早看JSF的書的時候,使用jsp作為頁面,#{xx}這樣的標記不能直接寫在頁面里,必須套在一個標記里面(和struts2里面的ognl一樣郁悶)。后來才知道,這是jsp的問題,不是JSF的問題。現在大家都是用facelets作JSF的展現,JSF2.0更是把這個標準化為首選。于是直接在頁面上寫#{someAction.doSth('Hello')},完全OK,頁面加載的時候會觸發調用該方法。
然后我們再來看后端知道前端有什么的例子:
閱讀全文
走在組件化的路上(三)——JSF的優勢之忘記http
摘要: 現在開始說JSF的優勢。一個一個的說,最后整理的時候再分主次吧,現在先就針對上面的幾個問題來說。
1.URL到action method
閱讀全文
走在組件化的路上(二)——JSF能夠解決什么問題
摘要: 首先,看看在使用struts等框架做開發的時候,遇到的一些問題.
閱讀全文
走在組件化的路上(一)——緣起
摘要: 09年4月我從A公司離職,被同事拉到一個創業團隊做網頁游戲,他們當時使用的技術體系是基于Seam的。而我則是SSH的忠實用戶,此前一直跟隨江南白衣、appfuse的路線,大大小小也做了一些項目,也自己攢了一堆輪子。花了1年多的時間在一個基于元數據的基礎框架上面,那時候我基本上掌握了maven的簡單使用,于是自己做的一些基礎性的東西也都是使用maven來做依賴管理、版本發布。
閱讀全文