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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java Web项目的保存和刷新

發(fā)布時(shí)間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web项目的保存和刷新 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如何配置計(jì)算機(jī)以保存并刷新Java Web項(xiàng)目? 當(dāng)您向開發(fā)人員提出此問(wèn)題時(shí),答案以“哦,好吧……”開頭,并以某種可行的方式繼續(xù)描述。 每個(gè)人都有自己的方式。

首先–為什么需要這個(gè)? 因?yàn)閳?zhí)行復(fù)制和重新啟動(dòng)服務(wù)器是生產(chǎn)力的殺手-浪費(fèi)大量時(shí)間。 如果不提高將項(xiàng)目與容器同步的工作效率,即使是進(jìn)行簡(jiǎn)單的修復(fù),也可能需要完整的構(gòu)建和部署周期才能進(jìn)行測(cè)試。 這可能會(huì)花費(fèi)很多時(shí)間,具體取決于項(xiàng)目的規(guī)模。

我會(huì)寫下一些內(nèi)容,以補(bǔ)充我的StackOverflow答案 :

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

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

  • 常規(guī)HotSwap –只需在調(diào)試模式下運(yùn)行servlet容器即可。 每當(dāng)更改類文件時(shí),就可以交換方法的主體。 但是,更改方法或類簽名需要重新啟動(dòng)。 我一直使用此選項(xiàng),而且還沒(méi)有那么痛苦–在所有方法簽名重新定義和重構(gòu)都不會(huì)經(jīng)常發(fā)生之后,即使這樣做了,也可以重新啟動(dòng)服務(wù)器,因?yàn)槟槐貙W⒂谑鼓承┨囟üδ芷鹱饔谩?
  • DCEVM – VM增強(qiáng)功能,允許完全重新加載類。 我沒(méi)有使用過(guò)它,但是如果它可以正常工作,它應(yīng)該可以解決上面提到的簽名重新定義問(wèn)題。
  • JRebel –商業(yè)替代品。 我從未使用過(guò)它,我聽說(shuō)過(guò)它很好,而且我知道還有很多額外的功能,可以讓您在各種框架中使用它,例如,重新配置spring上下文不需要重新啟動(dòng)。 我不認(rèn)為這些事情經(jīng)常發(fā)生,因此我從不推薦JRebel(商業(yè)化),但這是您應(yīng)該考慮的重要選擇。
  • 每次更改都重新啟動(dòng)服務(wù)器。 如果項(xiàng)目很小,這將花費(fèi)很少的時(shí)間,因此可以選擇。 但是我什至不建議在小型項(xiàng)目中使用它,因?yàn)橹辽貶otSwap易于配置(而且您仍然需要調(diào)試模式)

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

通過(guò)將aardwark.war文件放入您的tomcat中并重命名它,使其名稱包括項(xiàng)目目錄的路徑,并進(jìn)行同步處理,即可工作。 請(qǐng)注意,這是添加到上面第一個(gè)列表的選項(xiàng)。 對(duì)于熱交換,您仍然需要第二個(gè)列表中的三個(gè)選項(xiàng)之一。 在項(xiàng)目頁(yè)面上有一個(gè)更詳細(xì)的設(shè)置指南,但有幾點(diǎn)需要強(qiáng)調(diào):

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

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

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。