簡體   English   中英

如何使用maven-tomcat7-plugin在Tomcat上適當地熱部署/重新部署戰爭?

[英]How to properly hot deploy/redeploy war on Tomcat with maven-tomcat7-plugin?

我知道有很多線程在談論它,但是我暴露出一種情況,我無法在他們的幫助下解決。 我希望我的問題以及將來的解決方案能夠在我所處的環境中幫助更多的人。

我正在嘗試在Tomcat中進行戰爭的熱部署,並且發現自己遇到以下四種情況:

情況1

從項目文件夾執行的部署命令:

mvn clean install org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy -P PROFILE_ONE,PROFILE_TWO -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.build.sourceEncoding=UTF-8 -Dcobertura.skip=true -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.reporting.outputEncoding=UTF-8 -Dmaven.tomcat.path=/MY_PATH -Dmaven.tomcat.url=http://localhost:8081/manager/text -Dmaven.tomcat.server=TomcatServer -Dtomcat.password=TOMCAT_USER -Dtomcat.username=TOMCAT_PASSWORD

AND apache-tomcat-7.0.91 \\ conf \\ context.xml具有以下屬性:

<Context antiResourceLocking="true" antiJARLocking="true">

情況1結果

部署工作正常,但是當我進入應用程序時出現以下錯誤:

找不到此頁面(localhost)找不到地址為http:// localhost:8081 / MY_PATH /#/ PATH的網頁 HTTP錯誤404

情況二

從項目文件夾和apache-tomcat-7.0.91 \\ conf \\ context.xml執行的情況1的相同命令,沒有防鎖定屬性:

<Context>

案例2結果

部署和應用程序正常運行,但是當我嘗試重新部署時,使用相同的命令並添加屬性-Dmaven.tomcat.update=true不能正常運行,因為有幾個jar被阻止,並且tomcat無法刪除它們。 (這就是為什么在其他情況下我添加防鎖定屬性的原因)

情況3

從項目文件夾和apache-tomcat-7.0.91 \\ conf \\ context.xml執行的情況1的相同命令具有以下屬性:

<Context antiJARLocking="true">

情況3結果

等於案例2的結果。

案例4

從項目文件夾和apache-tomcat-7.0.91 \\ conf \\ context.xml執行的情況1的相同命令具有以下屬性:

<Context antiResourceLocking="true">

案例4結果

等於情況1的結果。

案件結束

如您所見,我的目標是先進行部署,然后重新部署相同的應用程序(在項目文件夾中進行更改)。 我找到的所有信息都在討論防鎖定屬性,但是正如我上面所說,當我將它們放在context.xml上時,該應用程序似乎無法正常工作。 重要的是要說,由於項目需要,我無法更改戰爭的名稱。

編輯1

案例5

我也嘗試使用以下命令:

mvn clean install -U -P PROFILE_ONE,PROFILE_TWO -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.build.sourceEncoding=UTF-8 -Dcobertura.skip=true -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.reporting.outputEncoding=UTF-8 org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:redeploy-only -Dmaven.tomcat.path=/MY_PATH -Dmaven.tomcat.url=http://localhost:8081/manager/text -Dmaven.tomcat.server=TomcatServer -Dtomcat.password=admin -Dtomcat.username=admin

apache-tomcat-7.0.91 \\ conf \\ context.xml具有以下屬性:

<Context antiResourceLocking="true">

個案5結果KO

等於情況1的結果。

為什么antiResourceLocking="true"導致結果1錯誤?

根據Tomcat,您不應該同時使用antiResourceLockingantiJARLocking功能:

antiJARLocking是antiResourceLocking的子集,因此,為防止重復工作和可能出現的問題,任何時候都應僅將這些屬性之一設置為true。

還有關於使用antiResourceLocking的特定警告

請注意,將此設置為true有一些副作用,包括在運行的服務器中禁用JSP重載:請參見Bugzilla 37668。

請注意,在主機的appBase之外的應用程序(默認為webapps目錄)中將此標志設置為true會導致在Tomcat關閉時刪除該應用程序。 您可能不想這樣做,因此,在主機的appBase之外的Web應用程序上設置antiResourceLocking = true之前,請三思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM