<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 193,  comments - 520,  trackbacks - 0
     
    剛剛換了工作,下周去新的公司上班。復(fù)雜的心情,很難說的出是一種什么的感覺。中午經(jīng)理請我吃飯,本該我請他的,他一定要付錢。老實說,經(jīng)理對我非常不錯,但是,很多東西是很難說的。上個月向經(jīng)理提出辭職,他表示了理解。新公司在上地,這就意味著要重新找房子。感覺北邊的房子比南邊的房子要貴出一頭,找了個兩居,明天打算搬過去。呵呵,也正在找人合租。
    posted @ 2006-03-03 14:04 ronghao 閱讀(848) | 評論 (4)編輯 收藏
    Tomcat是接觸最久的應(yīng)用服務(wù)器,同時也被它的classloading愚弄過好多次。印象中比較深的一次是建立了一個web應(yīng)用,使用oracle數(shù)據(jù)庫,我把oracle的jdbc driver放到了WEB-INF/lib目錄下面,然后給Tomcat配置了數(shù)據(jù)源,在這個應(yīng)用里面連接這個數(shù)據(jù)源,來訪問數(shù)據(jù)庫。看起來一切正常,可是一啟動Tomcat,就報出一個錯誤,說是找不到driver類。后來知道這是由于Tomcat的classloading機制造成的。總的來說,Tomcat開源、簡單,文檔清楚,又學(xué)習(xí)過一陣它的源碼,是我了解最多的應(yīng)用服務(wù)器了,所以就從它開始。
     
          運行Tomcat就是運行org.apache.catalina.startup.Bootstrap類的main方法,和運行普通的應(yīng)用程序并無二致,所以Java 2的classloading機制適用于這個過程。但是Bootstrap運行起來以后,會加載common、server下面的類,加載webapps下面的web應(yīng)用。這些類的加載是由不同的classloader來完成的。Tomcat的classloader結(jié)構(gòu)如下:

    BootStrap classloader(加載JRE/lib下的rt.jar和其他重要jar文件)

                                                         é

    ExtClassLoader (加載JRE/lib/ext下的jar文件,Java擴展框架使用)

                                                         é

    AppClassLoader ($CATALINA_HOME/bin/bootstrap.jar commons-logging -api.jarcommons-daemon.jar$JAVA_HOME/lib/tools.jarjmx.jar)

                                       é

    common (加載$CATALINA_HOME/common/Tomcat本身和Web App共享類)

                      é                                                                        é

    Catalina (加載$CATALINA_HOME /server/Tomcat本身使用的類)

    Shared (加載$CATALINA_BASE /shared/,所有Web App共享類)

                                                            é

    WebappClassLoader (加載各個Web Appclass,不同的Web App被隔離開)


    Tomcat在啟動的時候,完全忽略了class path的設(shè)置,而重新設(shè)置了class path,所以AppClassLoader 載入的類將不是class path設(shè)置的類。
     
    Tomcat沒有完全使用Java 2的parent delegation模型。這一點體現(xiàn)在WebappClassLoader上。在一個web app中,載入類的過程是這樣的:
     
    首先檢查本地的WebappClassLoader,如果沒有,
    則請求它的父ClassLoader,即shared。
    從shared開始,采用parent delegation,即shared請求它的父classloader common來載入類,這個過程一直延續(xù)到BootStrap classloader。
     

    正是因為這種機制,使我們在兩個Web app中有相同的class的時候,不會相互干擾。比如說,兩個app中都使用了log4j,在WEB-INF/lib下面分別有一份log4j.jar,配置輸出到不同的文件。因為WebappClassLoader僅對本app可見,所以log4j可以獨立工作,而不相互影響。但是,如果我們把這兩個app下面的log4j.jar移動到shared目錄或者common目錄,那他們就會把日志輸出到同樣的文件了,因為這時候是共享的。
     
    記得當(dāng)時看到WebappClassLoader的這個特性,心下暗喜,盤算著自己能不能寫一個java.lang.String類,放到WEB-INF/lib下面,而得到優(yōu)先加載的機會呢?馬上興沖沖地進行試驗,但是結(jié)果讓我失望,翻出tomcat的源碼一看,發(fā)現(xiàn)以java.,javax.,sun.,開頭的class,WebappClassLoader一概不予理會,直接把燙山芋扔給它的父loader了。另外,Tomcat文檔交待,遇到加載org.xml.sax.* ,org.w3c.dom.* ,org.apache.xerces.* ,org.apache.xalan.* 這些包的class的請求,WebappClassLoader也不會受理。

    引用地址:
    http://spaces.msn.com/myj1024/blog/ 
                                    
    posted @ 2006-03-01 16:55 ronghao 閱讀(2713) | 評論 (0)編輯 收藏
    個人比較懶一點,對異常處理也懶的可以。程序中異常分為Exception和RuntimeException。每個層定義一個RuntimeException,例如DAO層,就一個DaoRuntimeException;service層,就一個ServiceRuntimeException.所有該層中程序無法恢復(fù)的異常通通用各層的RuntimeException封裝扔出,最后統(tǒng)一捕捉有一個專門的異常處理類處理(這個類也就是讀出異常類中所包含的信息,最后告訴用戶:不好意思,系統(tǒng)問題,請通知那幫程序員!)
    而Exception定義的比較多一點,其實僅僅是類的簽名不同而已。它們表達(dá)了不期望的各種事件流,可以通過它們來部分的控制事件邏輯。比如很簡單的一個UnauthorizedException,告訴客戶沒有權(quán)限等等,調(diào)用捕捉到這個異常就會改變事件流到相應(yīng)處理頁面提示用戶。
    posted @ 2006-02-20 15:36 ronghao 閱讀(691) | 評論 (2)編輯 收藏
    好久沒有更新BLOG了,過完年回來就一直思考著要不要換個工作。老實說,自己目前的工作還是很不錯的,老板和經(jīng)理都很好,但是問題就是研發(fā)這塊人數(shù)太少,自己的工作從表現(xiàn)層到數(shù)據(jù)庫、用例分析包括CSS都有涉及,都懂點但都不精;并且所有的開發(fā)相關(guān)全部用的是開源,自己的提高有限,很多東西僅僅靠自己自學(xué)是遠(yuǎn)遠(yuǎn)不夠的,要有人來帶一帶。工作的時間越長,越感到自己學(xué)的東西太少太少。所以就想換一個大一點的公司更好的提高自己。
    網(wǎng)上更新了簡歷,最近也有面試,很多都讓你去做外包。好象很多人對外包有看法,我也是。不做外包。
    posted @ 2006-02-15 10:52 ronghao 閱讀(560) | 評論 (2)編輯 收藏
    周六報名參加了BEA UG活動。去的時候工作人員已經(jīng)在不斷的加凳子了。奇怪的是第一排竟然還有空位卻沒人去坐,于是很幸運的來得晚卻坐到了第一排。
    BEA的張健的演講更傾向于BEA本身的一些東西,除了推介BEA貢獻(xiàn)的開源項目Beehive,他還用XMLBean和BEA的WorkShop做了演示,第一次見BEA的WorkShop還以為是Eclipse,兩者長得太象,后來張鍵說WorkShop是基于Eclipse的。總體感覺有點象給BEA做市場推廣的意思。呵呵,個人意見。
    Perryn Folwer,使用Selenium為Web App進行自動功能測試。自己Selenium并不了解,Perryn Folwer說Selenium是用javascript寫的,整個演示給人的感覺是很舒服。看了用JAVA寫的Selenium測試腳本,代碼量還是不少的(僅僅是一個查詢),這樣如果覆蓋整個應(yīng)用程序會有多少代碼量呢?但是考慮到一旦測試腳本確定下來以后的工作將是非常輕松的,可以更快的得到用戶的反饋,這點代價也是值得的。
    其實這次參加BEA UG最主要的還是想聽聽Michael Chen對AJAX的一些發(fā)展看法。試用過json,Bufflo,Demo都做的非常好,但自己關(guān)心的是如何把它運用到具體的項目中去,有沒有一些最佳實踐。Michael Chen強調(diào)了一個適用范圍:中小型應(yīng)用,但什么是大應(yīng)用與中小應(yīng)用的分界點還是比較模糊,Michael Chen說自己對Bufflo的應(yīng)用還是結(jié)合webwork一起用,取代webwork
    的校驗部分,同時他還說到了一個什么TREE??(沒聽清)有意思的是Michael Chen在提到webwork的時候又順便把STRUTS鄙視了一通:)
    總的感想是:真正感興趣的話題沒有深入地談,遺憾。對我們這些開發(fā)人員來說,參加幾個人或者十幾個人的小型聚會互相交流一下經(jīng)驗和想法也許會更好一點。
    posted @ 2006-01-23 11:04 ronghao 閱讀(535) | 評論 (0)編輯 收藏
    僅列出標(biāo)題
    共39頁: First 上一頁 30 31 32 33 34 35 36 37 38 下一頁 Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚美影视免费在线观看| 7m凹凸精品分类大全免费| 国产∨亚洲V天堂无码久久久| 无码精品国产一区二区三区免费| 亚洲偷自精品三十六区| 亚洲一区二区三区在线播放| 中文字幕在线免费| 成人特级毛片69免费观看| 亚洲美女视频免费| 一区二区三区亚洲视频| 91免费国产精品| 美女黄频a美女大全免费皮| 在线观看亚洲人成网站| 免费又黄又爽又猛的毛片| 免费看h片的网站| 国产A∨免费精品视频| 亚洲妇女熟BBW| 亚洲国产成人一区二区精品区| 久久久久久国产精品免费免费| 全黄大全大色全免费大片| 亚洲精品美女久久久久久久| 亚洲成AV人片在线观看无码| 免费精品国产自产拍观看| 妻子5免费完整高清电视| 国产在线精品一区免费香蕉| 色综合久久精品亚洲国产| 亚洲女人影院想要爱| 精品国产综合成人亚洲区| 免费在线观看毛片| 妞干网免费观看视频| 日本免费大黄在线观看| 男女污污污超污视频免费在线看| 亚洲午夜精品一区二区公牛电影院| 中文字幕亚洲一区二区va在线| 日韩激情无码免费毛片| 99久久国产热无码精品免费| 男人都懂www深夜免费网站| 一级毛片免费在线播放| 日韩欧美亚洲国产精品字幕久久久 | 亚洲精品视频免费看| 国产午夜无码精品免费看 |