進入項目就一直忙忙碌碌,朦朧中已經有近一年沒寫Blog了,放下手中的筆,體息一下,覺得是乎應該對自己最近的工作總結一下,拿起鍵盤,卻又不知道具體要說些什么,似乎有很多要寫的,很散,思維還有點亂......,還是就由著思緒來吧?~~
我所在的項目由于一期使用的是一個公司的開發平臺,因為其平臺自身的功能限制無法擴展、難以維護且系統可控制度極低,因此,客戶方決定在二期重新設計架構并在新的架構上完全重新開發,而我正是在為新的架構做技術預研,其中形形色色的問題亂如麻。
首先是JSF,我們采用的是MyFaces的實現,服務器WAS5.1,JDK1.4.1.2,在發布JSF應用時的第一個問題就是JSF容器無法正常初始化。這個問題很容易定位,就是由于Servlet 2.3規范對Lisener和Servlet的初始化順序要求不嚴格,從而使不同廠商有著不同的實現導致的。但因為有朋友也在使用JSF,且服務器版本也一致,他們沒有問題,偏偏我整死也跑不通,所以,開始覺得自己的判斷可能不對,但郁悶的是用google搜索半天沒搜到解決方案,最后沒折了,只好自己去打開JAR包看看源代碼,結果發現里面有個MyFacesServlet,打開一看內容,簡直想一頭撞死,原來該類解決了2.3規范問題,從而他可以替換Linsener類的初始化職責。他在被加載時首先會檢查StartupServletContextListener有沒有正常初始化,如果未初始化則調用StartupServletContextListener進行初始化。看來有時候還真是不能偷半點懶,要相信自己的判斷。
其次是JSTL,我最初用的是apache的參考實現1.1版本,結果整死都無法使用,總是報taglib無法解析,到網上查了半天,沒有一個人說具體的解決方案,沒辦法,從來沒用過JSTL啊,新手總是會碰上一臉灰的,后來打開看Tablib的版本,天啦,人家要求的是JSP 2.0,而我的還是基于2.3規范的1.2,當然無法解析了,然后從新從網上DOWN個jstl 1.0下來,一跑就通!!唉,真是沒辦法,在網絡上,有些問題一搜就到,而有些看似簡單的問題卻能把人折騰個半死,結果發現你還是要自己定下心來去查,千萬不要全指望別人。又受教了。
再次SpringWebflow,到目前為此,webflow還處于1.0早期版本,現在還不能確定1.0正式版何時推出,做為我們來說,也算是一次大膽償試,說實話,當前的webflow版本功能還不能足以應用到項目中來,但我相信他的正式版應該會很快推出,所以就搶先償試了,償試中的問題就不說了,就說說它現在的缺陷吧,
? 1.支持流程級變量創建,卻無法給變量賦值,郁悶,這么重要的功能居然還沒提供
? 2.調用POJO方法時,必需要有參數,且參數必需是在flowScope上下文里,連靜態常量參數都不支持,又狂郁悶了一把。在流程里,這是再常用不過的功能了,居然沒提供,希望正式版快快出來,并補上這些缺陷。要不然,他是不可能進入實際項目應用的。偶現在真是想修改他的代碼,把這些功能通通加進去。。,但最終還是得先抑制住沖動---再等等看吧。。。
? 3.與JSF集成的JSP里的非受管Bean的普通JSP參數無法在flowScope里獲得,這一點不能肯定,有可能是轉發方式的問題,希望能修改該問題。
? 4.流程里的表達式靈活性太差,盡管是采用OGNL做的解析,但還是只能寫一些極其簡單的邏輯表達式,稍微復雜一點的----別想。這一點,也有可能是我還沒用好的緣故,需進一步證實
最后就是自定義Data Table UI組件了,我們要同時支持列表分頁,定制式的組合查詢,動態排序等;這幾功能點乍一聽覺得應該不難,可一做起來,也并非易事,我現在沒有基于JSF的UI實現,而是通過JSP TAG +XML+XSLT+AJAX的方式來實現的,其中最復雜的就是組件的參數綁定和狀態綁定的問題,服務端是無狀態模型,所有狀態及參數都保存在客戶端,解決如何能讓自己的組件里的狀態參數不與其它組件或頁面上的其它參數發生沖突是個非常重要一環,另外就是SQL的解析,結果模型的抽象,轉換器的抽象,對UI前端的命令解析及執行,參數模型的封裝,對不同的數據來源用不周的解析器等等,都是要考慮的問題,這一塊要說起來就太多了,等先把這個組件完全測通了后,再拿現來專門討論討論。
感想,開發一個好的框架是一個非??妓降氖虑椋皇俏覀兤綍r所想像中的那樣簡單地將一些現成的開源框架拼湊起來就了事的,他涉及到了項目群的協模式,系統架構,各層所選用的技術框架特性,業務集成等方方面面,即使使用Spring這種幾乎現成的框架來做為系統的主干骨架,做為框架設計者,你要做的事還很多,你要從系統總體角度去考慮系統的邏輯模式,與外部系統的協作模式,系統的可擴展性和低侵入性;你要讓開發人員盡可能的少做重復勞動;你還要保證你所選的技術方案能在開發過程中無障礙;你要做好解決開發過程中的所有技術難題的準備;除了這些,更關鍵的是你還要能做好業務模型的抽象和設計,你要能及時或預先發現潛在風險和問題并解決它。。。。等等,太多太多。。。,而我,現在要行的路還長得很.....
posted on 2006-03-27 19:02
狂人思維·成都 閱讀(1351)
評論(5) 編輯 收藏 所屬分類:
JAVA技術 、
J2EE應用 、
工作間