licweiwei

          JSP的重新編譯

          這2天改頁(yè)面的BUG的時(shí)候遇到個(gè)很郁悶的問(wèn)題,每次修改過(guò)JSP都不去重新Load,后來(lái)經(jīng)人提醒是時(shí)間戳的問(wèn)題,每次保存修改的JSP的時(shí)候都要把系統(tǒng)時(shí)間改成2008年,weblogic才能重新編譯。刪除application,重新explod也不行。
          上網(wǎng)查了下資料,才發(fā)現(xiàn)weblogic重新編譯的條件。
          JSP容器通過(guò)實(shí)現(xiàn)StaleChecker接口調(diào)用_staticIsStale()方法。該實(shí)現(xiàn)接收一個(gè)帶有清單1中所示參數(shù)的回調(diào)(isResourceStale())。有了這些參數(shù),該實(shí)現(xiàn)可以?xún)H接收所有必需的信息,以推斷給定資源是否過(guò)期。當(dāng)資源(參數(shù)1)/foo.jsp的時(shí)間戳(參數(shù)2)比存儲(chǔ)在已編譯類(lèi)文件中的時(shí)間戳還要新(參數(shù)更大)時(shí),或者當(dāng)發(fā)行版本不同時(shí),JSP容器認(rèn)為JSP.class文件“過(guò)期”。
          清單1. staticIsStale()方法

          public static boolean _staticIsStale(weblogic.servlet.jsp.StaleChecker sci) {
             
          if (sci.isResourceStale("/foo.jsp"1089594167518L"8.1.2.0"
                                                      
          "America/Los_Angeles")) 
               
          return true;
             
          return false;
          }



           

        1. 因?yàn)镴SP頁(yè)面的時(shí)間戳保存在類(lèi)文件內(nèi)部,并且是在編譯時(shí)計(jì)算的,所以修改類(lèi)文件的時(shí)間戳不會(huì)對(duì)過(guò)期檢查過(guò)程產(chǎn)生影響。
        2. 第4個(gè)參數(shù),也就是時(shí)區(qū),只在以存檔格式(.war)進(jìn)行部署時(shí)使用。
        3. WebLogic發(fā)行版本隨每個(gè)服務(wù)包改變,因此需要為每個(gè)服務(wù)包重新編譯所有JSP。提出這個(gè)要求是為了確保JSP類(lèi)可以利用較新服務(wù)包或發(fā)行版本中的所有編譯器缺陷修復(fù)或所有JSP運(yùn)行時(shí)更改。

        4. 所以之前的問(wèn)題可能是老的class文件的時(shí)間戳是2008年,只要找到編譯后的class文件刪除,應(yīng)該就可以重新編譯了。項(xiàng)目中JSP class的目錄是:
          C:\bea\user_projects\domains\mydomain\myserver\.wlnotdelete\extract\myserver_appliesEAR_applies\jsp_servlet。

          關(guān)于時(shí)間戳的詳細(xì)介紹參考:

          http://dev2dev.bea.com.cn/techdoc/2005041305.html

          posted on 2007-11-03 19:46 licwei 閱讀(1124) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Technology


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 博湖县| 大兴区| 苍南县| 巴东县| 赤壁市| 贞丰县| 左云县| 七台河市| 耒阳市| 临桂县| 布拖县| 黔西县| 白玉县| 开平市| 陆丰市| 稻城县| 顺昌县| 依安县| 玛纳斯县| 子洲县| 宜宾市| 大渡口区| 郓城县| 兰西县| 奉节县| 九台市| 和田市| 高淳县| 彰武县| 雅安市| 凉城县| 江津市| 冀州市| 安庆市| 浏阳市| 治县。| 砚山县| 日土县| 镇康县| 博白县| 平顶山市|