【问题标题】:Cannot invoke Tomcat manager: Software caused connection abort无法调用 Tomcat 管理器:软件导致连接中止
【发布时间】:2016-08-03 19:44:25
【问题描述】:

我在多个地方看到除了我自己以外的人尝试了this link 中提供的所有解决方案,在浏览了 Google 上的每一页结果后,我都没有找到结果。我正在尝试将 maven 项目部署到 Tomcat,但得到以下打印输出:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.178 s
[INFO] Finished at: 2016-08-03T15:01:17-04:00
[INFO] Final Memory: 15M/105M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project Project_2: Cannot invoke Tomcat manager: Software caused connection abort: socket write error -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

两者

mvn tomcat7:deploy

mvn tomcat7:redeploy

导致同样的错误。

pom.xml

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <server>tomcat7</server>
        <path>/Project_2</path>
        <port>8085</port>
        <url>http://localhost:8085/manager/text</url>
        <update>true</update>
        <username>manager</username>
        <password>xxxx</password>
    </configuration>
</plugin>

tomcat-users.xml

<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<user username="admin1" password="xxxx" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui" />
<user username="manager" password="xxxx" roles="manager-script,admin-script" />

settings.xml(在 maven home 和 .m2 文件夹中)

<server>
  <id>tomcat7</id>
  <username>manager</username>
  <password>xxxx</password>
</server>

我知道我的 Tomcat 版本是 8,但是,根据 Borgy Manotoy,Tomcat7 插件适用于 Tomcat 8。

【问题讨论】:

    标签: maven tomcat


    【解决方案1】:

    同样的问题,通过 Maven settings.xml 中的正确凭据解决。是的,此错误消息具有误导性

    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project projectXXX: Cannot invoke Tomcat manager
    ...
    Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
    ...
    Caused by: java.net.SocketException: Connection reset by peer: socket write error
    

    我们在 pom.xml 中使用配置文件,所以:

    <profile>
       <id>stage_server</id>
       <activation>
          <activeByDefault>true</activeByDefault>
       </activation>
       <properties>
          <tomcat-server>stage-server</tomcat-server>
          <tomcat-url>http://stage.server.com/manager/text</tomcat-url>
       </properties>
    </profile>
    

    并设置maven“Tomcat插件”:

    <plugin>
       <groupId>org.apache.tomcat.maven</groupId>
       <artifactId>tomcat7-maven-plugin</artifactId>
       <version>2.2</version>
       <configuration>
          <url>${tomcat-url}</url>
          <server>${tomcat-server}</server>
          <update>true</update>
       </configuration>
    </plugin>
    

    最后是 Maven/conf 中的 settings.xml:

    <server>
      <id>stage-server</id>
      <username>admin</username>
      <password>xxxxx</password>
    </server>
    

    部署:

       mvn tomcat7:deploy -Pstage_server
    

    【讨论】:

    • 我可以从 Postman 上传文件,所以我知道用户名和密码正确,并且 Tomcat 服务器设置正确。我在项目根目录中的 settings.xml 中有用户名和密码,但是,它没有读取它们,也没有错误找不到我的服务器。我将用户名和密码直接移到了 POM.xml 中,它起作用了。我以为我已经阅读了我可以将 settings.xml 放在项目的根目录中,但是,我一定遗漏了一些东西。
    • @J.Chaney 我认为您必须在子目录“conf”的 Maven 主目录中拥有文件 settings.xml。如果你在 Maven home/conf 目录中有这个文件,部署会成功吗?
    【解决方案2】:

    我有同样的错误......

    在 Windows 主机上使用 Java 7,目标是在本地 VM (VirtualBox) 中运行的 Tomcat 7。访问经理的应用程序。从我的浏览器运行得非常好(/html/text)。

    似乎manager-gui & manager-script 角色不能授予同一个用户。因此,我最终拥有了具有manager-script 角色的deployer 用户,之后我能够正确执行Maven 命令:

    <tomcat-users>
       <role rolename="admin-gui"/>
       <role rolename="manager-gui"/>
       <role rolename="manager-script"/>
       <user username="admin" password="..." roles="admin-gui,manager-gui"/>
       <user username="deployer" password="..." roles="manager-script"/>
    </tomcat-users>
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 2014-12-08
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2011-01-04
      相关资源
      最近更新 更多