【问题标题】:Ant: "IOException: Error writing request body to server" on deployment to tomcatAnt:部署到 tomcat 时出现“IOException:将请求正文写入服务器时出错”
【发布时间】:2015-06-24 08:48:16
【问题描述】:

我是 StackExchange 的新手,所以请多多包涵我最终的错误...

我一直在寻找答案,但似乎没有一个适用于我的情况,因为构建和部署确实有效,但结果是在部署调用结束时出现 IOException。

我正在 ant 中构建一个部署脚本。部署部分正在使用这个taskdef:

<taskdef name="tomcatdeploy" classname="org.apache.catalina.ant.DeployTask" />
<target name="-tomcatdeploy" description="deploy to tomcat">
    <echo>deploying from client</echo>
    <tomcatdeploy
            url="http://32.0.26.146:8080/manager/text"
            username="<veryHardToGuessUsername>"
            password="<veryHardToGuessPassword>"
            path="/avlsweb"
            war="/mnt/s/Web/Avlsweb/BambooBuilds/TEST/${nt-server.dir.test}_Tc${version}/avlsweb##${version}.war"
            version="${version}"
            />   

我们使用 Bamboo 作为构建服务器。这适用于许多构建。但是最近我收到了这个构建错误:

/mnt/data/bamboo_home/xml-data/build-dir/AVTST-TEST15-JOB1/AvlswebScripts/Ant/build.xml:286: java.io.IOException: Error writing request body to server
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3192)
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3175)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:242)
at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:195)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:440)
at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

奇怪的是,构建工作正常,而且它也可以很好地部署到 tomcat。但是,由于某种原因,在部署后会发生 IOException,从而导致 Bamboo 中出现“红色”失败的构建消息。补充几点:

  • Tomcat 管理脚本用户已设置
  • Bamboo 构建服务器与 ant 运行在与目标 tomcat 应用程序服务器相同的服务器上,但是竹子和目标 tomcat 在不同端口上作为单独的服务器运行。
  • 构建服务器:Atlassian Bamboo 5.9.0
  • 蚂蚁版本:1.9.2
  • Tomcat 版本:8.0.15
  • Java 版本:1.7.0_67

有什么想法吗?

【问题讨论】:

    标签: java tomcat deployment ant bamboo


    【解决方案1】:

    我觉得我很慢,我也遇到过同样的问题

    tomcatdeploy 任务中而不是war 中使其成为localWar

    【讨论】:

    • 谢谢你,我花了几个小时来解决我的问题。
    【解决方案2】:

    如果您已经将实例部署到 Tomcat 服务器,您将收到此错误。你可以在tomcatdeploy中设置update="true"

    <tomcatdeploy
            url="http://32.0.26.146:8080/manager/text"
            username="<veryHardToGuessUsername>"
            password="<veryHardToGuessPassword>"
            path="/avlsweb"
            war="/mnt/s/Web/Avlsweb/BambooBuilds/TEST/${nt-server.dir.test}_Tc${version}/avlsweb##${version}.war"
            version="${version}"
            update="true"
            />
    

    另一种选择是显式取消部署然后重新部署,或者使用reload 标记而不是部署标记。

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 2019-12-01
      相关资源
      最近更新 更多