2017-08-22 22 views
1

在Tomcat 8.5中,Eclipse中有一个标准(undeploy => deploy)Ant脚本,它工作正常:在Tomcat 8.5上重新部署Ant失败 - java.net.HttpRetryException:由于服务器身份验证而无法重新尝试,在流模式下

<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 

但我们不希望在部署应用程序之前使用独立的undeploy命令(因为$ CATALINA_BASE/conf/[enginename]/[hostname] /project_name.xml然后被删除),我们很喜欢重新部署应用程序,通过参数update =“true”like in this documentation

此脚本在以前的版本中正常工作Eclipse在Tomcat 7上,但现在不在Tomcat 8.5上。我们得到一个奇怪的“认证”错误: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;在Tomcat 8.5.11/8.5.20上测试; java版本1.8.0_144。

回答

0

我遇到了完全相同的问题,无法找到正确解决问题的方法。

我为解决这个问题所做的工作是我用localWar替换了war标签。它不会使用HTTP PUT操作来部署应用程序,而会执行GET。我的理解是,不是通过HTTP发送WAR,而是告诉Tomcat管理器将文件从给定位置复制到webapps文件夹中。

你的文件看起来像:

<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> 

希望有所帮助。

0

请检查是否有在的tomcat-users.xml中定义的角色文件您当前的Tomcat 8.5的conf文件夹。验证它针对你刚才的Tomcat 7

的tomcat-users.xml文件应包含类似如下的定义:

<role rolename="manager"/> 
    <role rolename="admin"/> 
    <user username="admin" password="admin" roles="admin,manager"/> 
+1

在8.5中,它应该是文本界面的管理器脚本,因此它需要从7更改。 –

1

我发现了同样的。 8.5.15之后的所有版本都会出现这种情况。 8.5.15工作正常。 8.5.16,毕竟对我不利。

我还没有从版本注释中发现哪些更改会发生,或者为什么会发生,但是我可以验证它在8.5.15和8.5.16中没有发生。

我正在删除Meta-inf中的127.0.0.1门,我可以从WebBrowser登录就好了,但是当我尝试使用ant任务时,它总是失败。 是否存在从8.5开始的依赖性更改。15到8.5.16与构建XML?

所以,你可以通过尝试更旧的8.5版本来解决问题,我想也许我们应该打开一张针对Tomcat的票据。

相关问题