日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Web项目的保存和刷新

發布時間:2023/12/3 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web项目的保存和刷新 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何配置計算機以保存并刷新Java Web項目? 當您向開發人員提出此問題時,答案以“哦,好吧……”開頭,并以某種可行的方式繼續描述。 每個人都有自己的方式。

首先–為什么需要這個? 因為執行復制和重新啟動服務器是生產力的殺手-浪費大量時間。 如果不提高將項目與容器同步的工作效率,即使是進行簡單的修復,也可能需要完整的構建和部署周期才能進行測試。 這可能會花費很多時間,具體取決于項目的規模。

我會寫下一些內容,以補充我的StackOverflow答案 :

  • IDE集成– IDE可以選擇添加本地服務器并將項目部署到該服務器。 這需要附加的插件,配置哪些工作空間文件在servlet容器中的位置,并且并不總是有效。 當圖片中有Maven時,它要么不起作用,要么需要另一個插件(如我的這個答案所述 )。
  • 您使用一些工具來同步目錄結構。 在Eclipse中,有FileSync插件 ,它使您可以配置將哪些工作空間文件放到servlet容器中的什么位置。 可能存在執行相同操作的其他工具(例如unison ),或者您可能已經編寫了一些腳本或插件來執行此操作。
  • 從maven運行servlet容器(如果使用maven)–使用tomcat插件或jetty插件即可 。 缺點是,要在調試模式下運行,您需要附加外部調試器(而不是為此使用內置的IDE服務器集成)。 并且它需要插件配置。 另外,請記住,如果使用碼頭(較快速的選項)進行開發,那么如果您的生產容器是tomcat,則行為可能會有所不同。 麻煩不大,但仍要牢記一些。
  • 手動復制項目文件–一開始聽起來并不可怕,但隨后又開始困擾您–畢竟,這是一項要求自動化的任務。

因此,現在您已將類文件和資源(css,javascript,圖像,配置文件)復制到servlet容器。 但是,為了使它們起作用,您需要一些HotSwap功能。 也就是說,讓jvm重新加載類定義。 有四個選項:

  • 常規HotSwap –只需在調試模式下運行servlet容器即可。 每當更改類文件時,就可以交換方法的主體。 但是,更改方法或類簽名需要重新啟動。 我一直使用此選項,而且還沒有那么痛苦–在所有方法簽名重新定義和重構都不會經常發生之后,即使這樣做了,也可以重新啟動服務器,因為您不必專注于使某些特定功能起作用。
  • DCEVM – VM增強功能,允許完全重新加載類。 我沒有使用過它,但是如果它可以正常工作,它應該可以解決上面提到的簽名重新定義問題。
  • JRebel –商業替代品。 我從未使用過它,我聽說過它很好,而且我知道還有很多額外的功能,可以讓您在各種框架中使用它,例如,重新配置spring上下文不需要重新啟動。 我不認為這些事情經常發生,因此我從不推薦JRebel(商業化),但這是您應該考慮的重要選擇。
  • 每次更改都重新啟動服務器。 如果項目很小,這將花費很少的時間,因此可以選擇。 但是我什至不建議在小型項目中使用它,因為至少HotSwap易于配置(而且您仍然需要調試模式)

如此眾多的選擇–在Java世界中如此典型。 他們或多或少地工作良好。 但是,我決定再添加一個選項,該選項幾乎具有零配置– aardWARk 。

通過將aardwark.war文件放入您的tomcat中并重命名它,使其名稱包括項目目錄的路徑,并進行同步處理,即可工作。 請注意,這是添加到上面第一個列表的選項。 對于熱交換,您仍然需要第二個列表中的三個選項之一。 在項目頁面上有一個更詳細的設置指南,但有幾點需要強調:

  • 它僅適用于Maven項目。 為了具有零配置,需要使用Maven的Convention-over-configuration
  • 它獨立于IDE,獨立于servlet容器。
  • 它完成了我認為上面沒有其他解決方案可以做的事情(也許除了JRebel之外)-它也將同步依賴于Maven的項目。 通常,您有一個多模塊項目,其中一些項目打包為jar,而其他(網絡)項目則依賴于它們。 但是,您需要能夠在“核心”模塊中更改類,并立即查看Web應用程序中的更改。 這將意味著重新包裝并重新裝入罐子。 AardWARk只需解析pom,找到相關項目并將其類復制到classpath,即可覆蓋現有定義
  • 支持多個項目,還支持通過屬性文件進行配置(如果您不想或無法命名war文件來包含項目路徑)
  • 更改pom時不會同步jars文件-您需要重建并重新啟動。 嵌入Maven和運行依賴關系目標的一些解決方法,但是如果添加了新的jar,則無論如何都需要重新啟動。
  • 它之所以被稱為aardWARk,有一個簡單的原因-最好在您的項目之前加載此war文件。 不一定,因為僅同步jar文件才需要,但是最好同步。 Servlet容器不能保證Webapp的加載順序,但是很可能是按字母順序選擇它們的,因此很有用(出于明顯的原因,用war代替var)。

我希望它是一個有用的工具,如果人們開始使用它并提供反饋,我將感到非常高興。

參考: Bozho的技術博客博客中的JCG合作伙伴 Bozhidar Bozhanov的 Java Web Project 保存和刷新 。

翻譯自: https://www.javacodegeeks.com/2013/11/save-and-refresh-with-java-web-projects.html

總結

以上是生活随笔為你收集整理的Java Web项目的保存和刷新的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。