【问题标题】:Unable to deploy to Tomcat7 from cargo无法从 cargo 部署到 Tomcat7
【发布时间】:2011-12-02 06:42:27
【问题描述】:

我正在尝试使用来自 Maven 的 Cargo 通过 https 部署到远程 Tomcat7。

我已经设置了经理脚本角色,并且到目前为止我已经成功地能够远程取消部署应用程序。

我的样子是这样的:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.1.2</version>
    <configuration>
        <container>
            <containerId>tomcat7x</containerId>
            <type>remote</type>
        </container>

        <configuration>
            <type>runtime</type>
            <properties>
                <cargo.remote.uri>https://xxx/manager/text</cargo.remote.uri>
                <cargo.remote.username>${tomcat.username}</cargo.remote.username>
                <cargo.remote.password>${tomcat.password}</cargo.remote.password>
            </properties>
        </configuration>

        <deployer>
            <type>remote</type>
            <deployables>
                <deployable>
                    <groupId>mycomp</groupId>
                    <artifactId>myartifact</artifactId>
                    <type>war</type>
                    <properties>
                        <context>/</context>
                    </properties>
                </deployable>
            </deployables>
        </deployer>

    </configuration>
</plugin>

嗯,我知道凭据并且一切设置正确,并且我使用了新的 /text 界面,并且能够取消部署现有的应用程序。但是在尝试运行部署时:

mvn cargo:deployer-deploy -e

我得到一个根本原因的错误:

Caused by: java.io.IOException: Error writing request body to server
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:2809)
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:2792)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.pipe(TomcatManager.java:605)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:501)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:569)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:273)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:256)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:240)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:101)
... 25 more

我很快就明白了,所以不会超时。

文件可以很大吗?这是一场 60 MB 的战争。我确保我的 nginx 允许更大:

client_max_body_size 200M;

我还在管理器 webapps web.xml 中的文本管理器中添加了多部分配置,如下所示:

小服务程序> 经理 org.apache.catalina.manager.ManagerServlet 调试 2

<multipart-config>
  <max-file-size>209715200</max-file-size>
  <max-request-size>209715200</max-request-size>
  <file-size-threshold>0</file-size-threshold>
</multipart-config>

http://nexnet.wordpress.com/2011/04/27/large-war-file-cannot-be-deployed-in-tomcat-7/

我在很多方面都喜欢 Maven,但是错误报告真的很糟糕。任何帮助都非常感谢。

【问题讨论】:

  • 我也有同样的问题...你解决了吗?
  • 实际上,我什至不记得了 :) 也许是需要 ssl 的 wagon-extension?我会在几秒钟内发布答案。
  • 这里也有同样的问题!你解决了吗?

标签: tomcat7 maven-cargo


【解决方案1】:

最近,当我尝试cargo:deploy 一个工件时,我被这个错误所困扰。通常我们在部署之前停止、清理和启动 webapps 目录,但是这次我注意到一个工件没有被删除。

切换到cargo:redeploy后错误解决。

【讨论】:

    【解决方案2】:

    我在使用 ant deploy 任务部署到 tomcat 8 服务器时遇到了同样的错误消息。我的问题是服务器上的空间不足。检查 tomcat 的管理器日志是我的线索:

    10-Jul-2014 10:15:38.065 INFO [http-nio-8080-exec-2] org.apache.catalina.core.ApplicationContext.log Manager: deploy: Deploying web application '/abc_beta'
    10-Jul-2014 10:15:38.065 INFO [http-nio-8080-exec-2] org.apache.catalina.core.ApplicationContext.log Manager: Uploading WAR file to /usr/share/apache-tomcat-8.0.9/webapps/abc_beta.war
    10-Jul-2014 10:15:57.962 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.ApplicationContext.log Manager: managerServlet.check[/abc_beta]
        java.io.IOException: No space left on device
        ... stacktrace ...
    

    【讨论】:

    • 默认情况下,tomcat 日志位于您的 tomcat 发行版的logs 目录中。在这里您会找到 catalina.out 文件(此处写入 system.out 消息)以及 localhost、localhost_access、host-manager 和 manager 日志文件。
    【解决方案3】:

    我不记得我是否或如何解决这个问题,但由于 rascio 有同样的问题,我会发布一个想法。也许是需要 ssl 的 wagon-extension:

        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>2.2</version>
            </extension>
        </extensions>
    

    不过猜测。我认为在 Maven 3.0 之前你不需要它。

    【讨论】:

    • 感谢您的回复...但我不认为这是我的情况,因为我不使用 https...
    • 好的。对不起,那我不知道很遗憾。我想我实际上放弃了并使用 scp 和 Jenkins 的东西手动部署。
    【解决方案4】:

    我们在星期一偶然发现的另一个导致此异常的原因,当时使用 cargo 插件 插件在我们的 Jenkins 实例上的部署作业停止工作。不是全部,而是一些。主要区别在于作业中有一个自定义 settings.xml,供 Nexus 存储库下载部署文件。

    成功的部署作业按照https://support.sonatype.com/entries/20943003-configure-maven-to-download-from-nexus 中的描述进行配置,失败的部署作业缺少repositorypluginRepository

    我仍然不确定为什么行为会在某一时刻发生变化。有什么提示吗?

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2014-06-28
      • 2011-11-22
      • 2011-04-19
      • 2011-09-20
      • 2015-04-10
      相关资源
      最近更新 更多