如何使用maven-tomcat7-plugin在Tomcat上正确热部署/重新部署战争?

问题描述 投票:1回答:1

我知道有很多线索在谈论它,但我揭露了一个我无法在他们的帮助下解决的情况。我希望我的问题,如果将来它解决了,我可以在我的情况下帮助更多的人。

我正在尝试在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

案例2

从项目文件夹执行的案例1的相同命令和没有防爆属性的apache-tomcat-7.0.91 \ conf \ context.xml:

<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"causes导致1错误?

java maven tomcat7 tomcat7-maven-plugin
1个回答
0
投票

你不应该根据antiResourceLocking使用antiJARLockingTomcat功能:

antiJARLocking是antiResourceLocking的子集,因此,为了防止重复工作和可能出现的问题,任何时候都只应将其中一个属性设置为true。

还有关于使用antiResourceLocking的具体警告

请注意,将此设置为true会产生一些副作用,包括在正在运行的服务器中禁用JSP重新加载:请参阅Bugzilla 37668。

请注意,在主机appBase(默认情况下为webapps目录)之外的应用程序中将此标志设置为true将导致在Tomcat关闭时删除应用程序。你可能不想这样做,所以在appBase为其主机之外的webapp上设置antiResourceLocking = true之前要三思而后行。

© www.soinside.com 2019 - 2024. All rights reserved.