前言
tomcat7開始,tomcat支持應用的多版本部署,這個特性很不錯,尤其是生產環境中,升級應用,無需重啟tomcat,升級過程不影響業務。熱升級的特性,也只有少數頂級商業中間件能做到。
tomcat的並行部署
tomcat7開始,可以同時部署相同context path的多個不同版本的web應用,現在只能通過tomcat manager使用WAR file to deploy,才能做到多版本同時部署。war包的命名只能是context.war
, context##2.war,context##3.war之類。
當用戶使用http://localhost:8080/context訪問時,規則如下:
如果當前請求沒有session信息,則使用最新的war應用版本
如果當前請求有session,使用session對應的war應用版本
如果當前請求有session信息,卻找不到相應的war應用版本,則使用最新的war應用版本
使用實例
作為開發人員,我開發了一個web應用,web應用是一個war包,里面有一個index.jsp,簡單執行了out.print("jsp hello 1")。項目開發完畢后,web應用打包為myapp##1.war。
訪問http://localhost:8080/manager/ ->Deploy ->WAR file to deploy->Select WAR file to upload->選擇myapp##1.war->點擊Deploy
上傳成功后,可以看到Applications新增一個path為myapp,Version為1的應用。
使用google瀏覽器訪問http://localhost:8080/myapp/index.jsp,可以看到頁面顯示jsp hello 1
由於需求變更,需要把頁面顯示修改為jsp hello 2,修改代碼后,打包web應用為myapp##2.war。
重新上傳,可以看到Applications新增一個path為myapp,Version為2的應用。
使用google瀏覽器訪問http://localhost:8080/myapp/index.jsp,可以看到頁面顯示jsp hello 1(因為session信息對應版本1的應用,所以還是訪問版本1的應用)
然后再新開火狐瀏覽器,訪問http://localhost:8080/myapp/index.jsp可以看到頁面顯示jsp hello 2(因為沒有session信息,所以是訪問最新版本的應用)