狂人思維·成都
          Google
          軟件架構(gòu),開則持續(xù),合則穩(wěn)健;亦開亦合,剛?cè)岵?jì);講究平衡如同生活之中庸和諧.
          E-MAIL:guojian。zhang@gmail。com
          posts - 19,  comments - 62,  trackbacks - 0

          進(jìn)入項(xiàng)目就一直忙忙碌碌,朦朧中已經(jīng)有近一年沒寫B(tài)log了,放下手中的筆,體息一下,覺得是乎應(yīng)該對自己最近的工作總結(jié)一下,拿起鍵盤,卻又不知道具體要說些什么,似乎有很多要寫的,很散,思維還有點(diǎn)亂......,還是就由著思緒來吧?~~

          我所在的項(xiàng)目由于一期使用的是一個公司的開發(fā)平臺,因?yàn)槠淦脚_自身的功能限制無法擴(kuò)展、難以維護(hù)且系統(tǒng)可控制度極低,因此,客戶方?jīng)Q定在二期重新設(shè)計(jì)架構(gòu)并在新的架構(gòu)上完全重新開發(fā),而我正是在為新的架構(gòu)做技術(shù)預(yù)研,其中形形色色的問題亂如麻。

          首先是JSF,我們采用的是MyFaces的實(shí)現(xiàn),服務(wù)器WAS5.1,JDK1.4.1.2,在發(fā)布JSF應(yīng)用時(shí)的第一個問題就是JSF容器無法正常初始化。這個問題很容易定位,就是由于Servlet 2.3規(guī)范對Lisener和Servlet的初始化順序要求不嚴(yán)格,從而使不同廠商有著不同的實(shí)現(xiàn)導(dǎo)致的。但因?yàn)橛信笥岩苍谑褂肑SF,且服務(wù)器版本也一致,他們沒有問題,偏偏我整死也跑不通,所以,開始覺得自己的判斷可能不對,但郁悶的是用google搜索半天沒搜到解決方案,最后沒折了,只好自己去打開JAR包看看源代碼,結(jié)果發(fā)現(xiàn)里面有個MyFacesServlet,打開一看內(nèi)容,簡直想一頭撞死,原來該類解決了2.3規(guī)范問題,從而他可以替換Linsener類的初始化職責(zé)。他在被加載時(shí)首先會檢查StartupServletContextListener有沒有正常初始化,如果未初始化則調(diào)用StartupServletContextListener進(jìn)行初始化。看來有時(shí)候還真是不能偷半點(diǎn)懶,要相信自己的判斷。

          其次是JSTL,我最初用的是apache的參考實(shí)現(xiàn)1.1版本,結(jié)果整死都無法使用,總是報(bào)taglib無法解析,到網(wǎng)上查了半天,沒有一個人說具體的解決方案,沒辦法,從來沒用過JSTL啊,新手總是會碰上一臉灰的,后來打開看Tablib的版本,天啦,人家要求的是JSP 2.0,而我的還是基于2.3規(guī)范的1.2,當(dāng)然無法解析了,然后從新從網(wǎng)上DOWN個jstl 1.0下來,一跑就通!!唉,真是沒辦法,在網(wǎng)絡(luò)上,有些問題一搜就到,而有些看似簡單的問題卻能把人折騰個半死,結(jié)果發(fā)現(xiàn)你還是要自己定下心來去查,千萬不要全指望別人。又受教了。

          再次SpringWebflow,到目前為此,webflow還處于1.0早期版本,現(xiàn)在還不能確定1.0正式版何時(shí)推出,做為我們來說,也算是一次大膽償試,說實(shí)話,當(dāng)前的webflow版本功能還不能足以應(yīng)用到項(xiàng)目中來,但我相信他的正式版應(yīng)該會很快推出,所以就搶先償試了,償試中的問題就不說了,就說說它現(xiàn)在的缺陷吧,
          ? 1.支持流程級變量創(chuàng)建,卻無法給變量賦值,郁悶,這么重要的功能居然還沒提供
          ? 2.調(diào)用POJO方法時(shí),必需要有參數(shù),且參數(shù)必需是在flowScope上下文里,連靜態(tài)常量參數(shù)都不支持,又狂郁悶了一把。在流程里,這是再常用不過的功能了,居然沒提供,希望正式版快快出來,并補(bǔ)上這些缺陷。要不然,他是不可能進(jìn)入實(shí)際項(xiàng)目應(yīng)用的。偶現(xiàn)在真是想修改他的代碼,把這些功能通通加進(jìn)去。。,但最終還是得先抑制住沖動---再等等看吧。。。
          ? 3.與JSF集成的JSP里的非受管Bean的普通JSP參數(shù)無法在flowScope里獲得,這一點(diǎn)不能肯定,有可能是轉(zhuǎn)發(fā)方式的問題,希望能修改該問題。
          ? 4.流程里的表達(dá)式靈活性太差,盡管是采用OGNL做的解析,但還是只能寫一些極其簡單的邏輯表達(dá)式,稍微復(fù)雜一點(diǎn)的----別想。這一點(diǎn),也有可能是我還沒用好的緣故,需進(jìn)一步證實(shí)

          最后就是自定義Data Table UI組件了,我們要同時(shí)支持列表分頁,定制式的組合查詢,動態(tài)排序等;這幾功能點(diǎn)乍一聽覺得應(yīng)該不難,可一做起來,也并非易事,我現(xiàn)在沒有基于JSF的UI實(shí)現(xiàn),而是通過JSP TAG +XML+XSLT+AJAX的方式來實(shí)現(xiàn)的,其中最復(fù)雜的就是組件的參數(shù)綁定和狀態(tài)綁定的問題,服務(wù)端是無狀態(tài)模型,所有狀態(tài)及參數(shù)都保存在客戶端,解決如何能讓自己的組件里的狀態(tài)參數(shù)不與其它組件或頁面上的其它參數(shù)發(fā)生沖突是個非常重要一環(huán),另外就是SQL的解析,結(jié)果模型的抽象,轉(zhuǎn)換器的抽象,對UI前端的命令解析及執(zhí)行,參數(shù)模型的封裝,對不同的數(shù)據(jù)來源用不周的解析器等等,都是要考慮的問題,這一塊要說起來就太多了,等先把這個組件完全測通了后,再拿現(xiàn)來專門討論討論。

          感想,開發(fā)一個好的框架是一個非常考水平的事情,他不是我們平時(shí)所想像中的那樣簡單地將一些現(xiàn)成的開源框架拼湊起來就了事的,他涉及到了項(xiàng)目群的協(xié)模式,系統(tǒng)架構(gòu),各層所選用的技術(shù)框架特性,業(yè)務(wù)集成等方方面面,即使使用Spring這種幾乎現(xiàn)成的框架來做為系統(tǒng)的主干骨架,做為框架設(shè)計(jì)者,你要做的事還很多,你要從系統(tǒng)總體角度去考慮系統(tǒng)的邏輯模式,與外部系統(tǒng)的協(xié)作模式,系統(tǒng)的可擴(kuò)展性和低侵入性;你要讓開發(fā)人員盡可能的少做重復(fù)勞動;你還要保證你所選的技術(shù)方案能在開發(fā)過程中無障礙;你要做好解決開發(fā)過程中的所有技術(shù)難題的準(zhǔn)備;除了這些,更關(guān)鍵的是你還要能做好業(yè)務(wù)模型的抽象和設(shè)計(jì),你要能及時(shí)或預(yù)先發(fā)現(xiàn)潛在風(fēng)險(xiǎn)和問題并解決它。。。。等等,太多太多。。。,而我,現(xiàn)在要行的路還長得很.....

          posted on 2006-03-27 19:02 狂人思維·成都 閱讀(1352) 評論(5)  編輯  收藏 所屬分類: JAVA技術(shù)J2EE應(yīng)用工作間

          FeedBack:
          # re: 最近很忙,很郁悶,也很有收獲
          2006-03-28 12:13 | 2002PP
          偶也用過MyFaces, 但發(fā)現(xiàn)JSF好像和IE有兼容性的問題。
          在IE中在TextBox中按Enter鍵,表單不會被提交。但I(xiàn)E的頁面好像被刷新了,
          debug發(fā)現(xiàn)根本沒有進(jìn)入Backing Bean中。而在Firefox中就沒有問題。
          好像很多JSF應(yīng)用都有這個問題,不知道你有沒有碰到。  回復(fù)  更多評論
            
          # re: 最近很忙,很郁悶,也很有收獲
          2006-03-28 12:41 | langds
          我還在沒有遇到過這個問題,我現(xiàn)在是JSF和spring webflow集成在一起的,backing Bean是由Spring 的Bean Factory統(tǒng)一管理,當(dāng)然這個不是你說的那個問題的原因.
          你的這個問題可能是焦點(diǎn)設(shè)置的問題吧,實(shí)在不行你log4j的debug和trace打看,看看在觸發(fā)事件的時(shí)候,具體觸發(fā)的偵聽器或action是不是與你所配置相對應(yīng),如果不是,就看看你的代碼 是不是有問題了.如果沒找到問題,那就要看看是不是javascrip在處理前端參數(shù)時(shí)是不是給弄丟了,有一些JSF的組件實(shí)現(xiàn)的確和瀏覽器不兼容的問題,但這種情況應(yīng)該極少數(shù).
            回復(fù)  更多評論
            
          # re: 最近很忙,很郁悶,也很有收獲
          2006-03-28 13:12 | galaxy
          自定義Data Table UI組件
          這個想法好啊
          我們以前有過dbgrid組件tag,不過我感興趣的是你如何針對不同的需求動態(tài)組合
          定制式的組合查詢以及如何確定你查詢的數(shù)據(jù)源和你動態(tài)組合查詢的綁定
          等待你的消息。。。。。。。  回復(fù)  更多評論
            
          # re: 最近很忙,很郁悶,也很有收獲
          2006-03-29 11:54 | 江南白衣
          強(qiáng)啊! 你用的東西也太多,太新了吧?實(shí)驗(yàn)性項(xiàng)目?  回復(fù)  更多評論
            
          # re: 最近很忙,很郁悶,也很有收獲
          2006-03-30 12:52 | langds
          呵呵,
          to 江南白衣:
          這不是一個實(shí)驗(yàn)性項(xiàng)目,而是一個銀行全行級的CRM項(xiàng)目,從技術(shù)選型上來說,webflow以及JSF相對來說的確是時(shí)下的新技術(shù),新也就伴著不夠成熟,自然也會有風(fēng)險(xiǎn),尤其是webflow,連正式版都還沒有推出我們就準(zhǔn)備用上它了,嘿嘿,其實(shí)之所以選則webflow是有一定有前提的(受前任軟件平臺所影響),對于JSF,我們沒打算要用他的多復(fù)雜的組件,而是一些非常簡單的幾個常用HTML組件,比如數(shù)據(jù)列表,枚舉等都是我們自己基于標(biāo)準(zhǔn)taglib結(jié)合XSLT技術(shù)開發(fā)的,所以,對于JSF實(shí)際上我們只用了他的基本模型管理功能以及EL.相對于webflow來說,我們其實(shí)是將其定位到了導(dǎo)航流程這一層,我們之所以這樣限制一些功能的使用,在一定程度上來說也是為了盡量降低風(fēng)險(xiǎn).當(dāng)然webflow是否一定要啟用,目前還是考察階段.  回復(fù)  更多評論
            

          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿

          隨筆分類(31)

          隨筆檔案(19)

          文章分類(3)

          文章檔案(3)

          我關(guān)注的Blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 穆棱市| 永登县| 贺州市| 信丰县| 姚安县| 正蓝旗| 池州市| 会理县| 乌苏市| 赤水市| 枣庄市| 哈尔滨市| 资源县| 龙口市| 平顺县| 佛山市| 体育| 玛曲县| 海宁市| 宝丰县| 扎赉特旗| 西藏| 旬邑县| 潢川县| 唐海县| 贺州市| 玛多县| 广昌县| 康定县| 皋兰县| 南汇区| 临澧县| 田东县| 永兴县| 隆子县| 江永县| 阿瓦提县| 容城县| 阳城县| 将乐县| 通道|