Tomcat部署時war和war exploded區別以及如何實現熱部署


war和war exploded的區別

      使用IDEA配置Tomcat服務的時候,在 Select Artifacts to Deploy 選項中相同項目名有war和 war exploded 兩種模式,之前只是傻乎乎的隨機選一個,知其然而不知其所以然。今天探究一下二者的區別。
 
 
  • war模式:將web工程以war包的形式上傳到服務器;
  • war exploed模式:將web工程以當前文件夾的位置關系上傳到服務器。
       通俗地說,war模式先打成war包,然后再發布到Tomcat的ROOT下。所以選擇這個模式后,你再看下你的tomcat的root文件夾下,是剛打成的項目。war exploded模式只編譯生成target,然后把當前的target文件夾的位置關系上傳到服務器,沒有打包到tomcat的ROOT下。因此這種方式支持熱部署,一般在開發的時候也是用這種方式,關於熱部署,下面詳細介紹一下。
 

熱部署

 
      在平時開發的時候,每次修改代碼都需要重啟一次Tomcat的確不方便,如果使用熱部署,可以大大減輕工作量,此時應該對Tomcat進行相應的設置,這樣的話修改的jsp界面什么的東西才可以及時的顯示出來。需要在Tomcat做如下設置:
 
  • on ‘update‘ action:當用戶主動執行更新的時候更新    快捷鍵:Ctrl + F9
  • on frame deactication:在編輯窗口失去焦點的時候更新
      你可以根據自己的需求進行設置,我這里兩個都有設置。
      然后啟動IDEA的自動編譯功能。Intellij IDEA默認關閉了自動編譯,在Setting中找到 Build,Execution,Deployment => Compiler,勾選Build Project automatically。
 
      on frame deactivation熱部署缺點:基於JVM提供的熱加載僅支持方法塊內代碼修改,只有在debug模式下,並且idea失去焦點時才會觸發熱加載,相對加載速度緩慢。
      如果你的工程中沒有選項 Update classes and resources ,那么,只能更新classes文件中的變動,並不能更新靜態文件中的變動。
        出現這種選項情況的原因是在配置Deployment時選擇了包含war的包,如全部都是war exploded則不會出現這種情況。召喚Update classes and resources的方式:先remove當前工程所有的Artifacts,再次添加,添加的時候在Artifact清單中僅僅選擇工程名稱后面有 exploded的選項。
 
Reference
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM