我们在EclipseonTomcat8.5上有一个标准的(未部署=>部署) Ant脚本,它运行得很好:
<target name="undeploy" description="undeploy from Tomcat">
<undeploy
failonerror="no"
url="${tomcat-manager-url}"
username="${tomcat-manager-username}"
password="${tomcat-manager-password}"
path="/${project-name}"
/>
</target>和
<target name="deploy" description="deploy to tomcat">
<echo>deploying from client</echo>
<deploy
url="${tomcat-manager-url}"
username="${tomcat-manager-username}"
password="${tomcat-manager-password}"
path="/${project-name}"
war="file:${build-directory}/${war-file-name}"
/>
</target>这很好,部署是成功的:
undeploy:
[undeploy] OK - Undeployed application at context path /project_name
deploy:
[echo] deploying from client
[deploy] OK - Deployed application at context path /project_name
build-and-undeploy-deploy:
BUILD SUCCESSFUL但是,我们不希望在部署应用程序之前使用独立的取消部署命令(因为$CATALINA_BASE/conf/enginename/hostname/project_name.xml随后被删除),我们喜欢使用参数update="true" 就像在这个文档里在目标部署上重新部署应用程序。
这个脚本在以前版本的Tomcat 7上的Eclipse中运行得很好,但现在在Tomcat 8.5上就不行了。我们得到一个奇怪的"authentication"错误: java.net.HttpRetryException:无法在流模式下由于服务器身份验证而重试
<target name="deploy" description="deploy to tomcat"
<echo>deploying from client</echo>
<deploy
url="${tomcat-manager-url}"
username="${tomcat-manager-username}"
password="${tomcat-manager-password}"
path="/${project-name}"
war="file:${build-directory}/${war-file-name}"
update="true"
/>
</target>结果:
BUILD FAILED
..\build.xml:104: java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
Total time: 922 milliseconds在Eclipse氧气版本1.10.1中的Ant;在Tomcat 8.5.11/8.5.20上测试;java版本1.8.0_144。
发布于 2017-09-21 14:55:01
我遇到了同样的问题,却找不到合适的解决办法。
为了解决这个问题,我所做的就是用localWar替换了localWar标记。与使用HTTP操作部署应用程序不同,它将执行GET操作。我的理解是,它将告诉Tomcat管理器将文件从给定位置复制到webapps文件夹中,而不是在HTTP上发送WAR。
您的文件看起来应该是:
<target name="deploy" description="deploy to tomcat"
<echo>deploying from client</echo>
<deploy
url="${tomcat-manager-url}"
username="${tomcat-manager-username}"
password="${tomcat-manager-password}"
path="/${project-name}"
localWar="file:${build-directory}/${war-file-name}"
update="true"
/>
</target>希望这能有所帮助。
发布于 2017-11-20 18:19:36
我也发现了同样的。在8.5.15之后的所有版本中都会出现这种情况。8.5.15工作正常。8.5.16毕竟我失败了。
我还没有从发行说明中知道会发生什么变化,或者为什么会发生这种变化,但我能够验证它不是在8.5.15中发生,而是在8.5.16中发生。
我正在删除Meta中的127.0.0.1门,我可以从WebBrowser登录,但是当我尝试使用ant任务时,它总是失败的。构建xml时是否存在从8.5.15到8.5.16之间的依赖关系?
所以,你可以尝试一个更旧的8.5版本,我认为也许我们应该开一张对Tomcat的罚单。
发布于 2017-11-04 15:00:29
请检查当前Tomcat8.5的tomcat-users.xml文件中是否存在在conf文件夹中定义的角色。在前面Tomcat 7的tomcat-users.xml文件中验证它。
它应该包含如下定义:
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>https://stackoverflow.com/questions/45809257
复制相似问题