Tomcat 7:对等方或软件重置连接导致连接中止
Posted
技术标签:
【中文标题】Tomcat 7:对等方或软件重置连接导致连接中止【英文标题】:Tomcat 7: Connection reset by peer or Software caused connection abort 【发布时间】:2014-12-08 23:47:21 【问题描述】:我在尝试部署 Java 应用程序时遇到问题。
Cannot invoke Tomcat manager: Connection reset by peer: socket write error
或
Cannot invoke Tomcat manager: Software caused connection abort: socket write error
在 pom.xml 我有这个:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8085/manager/html</url>
<server>tomcat7</server>
<path>/java_web</path>
<username>admin</username>
<password>admin</password>
</configuration>
</plugin>
在 tomcat-users.xml 我有这个:
<tomcat-users>
<role rolename="admin"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<user username="admin" password="admin" roles="manager-gui,admin,manager-jmx,manager-script" />
</tomcat-users>
在 Maven/conf/settings.xml 我有:
<server>
<id>tomcat7</id>
<username>admin</username>
<password>admin</password>
</server>
当我想去的时候
http://localhost:8085/manager/html/deploy?path=%2Fjava_web&update=true
并输入用户名和密码(admin admin)我有错误:
403 Access Denied
You are not authorized to view this page.
但我输入了 tomcat-users.xml 用户 admin 具有 manager-gui 角色。 我正在使用 Tomcat 7.0.56 和 Jenkins。还可以使用命令:clean 和 tomcat7-redeploy。 需要帮助以了解问题所在:C
【问题讨论】:
【参考方案1】:如果你反复尝试在tomcat-users.xml文件中设置用户,但错误仍然存在,请考虑同时检查Tomcat安装的权限和用户运行服务。
我遇到了同样的错误(“Connection reset by peer: socket write error”),直到我意识到我首先使用管理员/root 用户启动了 Tomcat 服务器,然后我正在尝试使用另一个没有管理权限的用户启动该服务器。事实证明,在这些情况下,Tomcat 能够启动,但从逻辑上讲,它无法写入“webapps”目录以进行远程部署,出现类似于用户未正确配置时发生的错误(症状相同但不同问题)。
我在使用 Windows Server 时遇到了这个问题,但我想 Linux 和 MacOS 可能会发生类似的情况。我把它留在这里“为了后代”,以防它可能对其他人有用。
【讨论】:
【参考方案2】:在我的情况下,设置看起来不错,但是我已经将相同的 webapp 上传到了 tomcat 并且没有指定
<update>true</update>
在 pom.xml 中的 tomcat 插件中
【讨论】:
参见 Melody Feng 的回答。 投反对票。这是一个编译错误。 cvc-complex-type.2.4.a:发现以元素“更新”开头的无效内容。 '"maven.apache.org/POM/4.0.0":extensions, "maven.apache.org/POM/4.0.0":executions, "http://maven.apache.org/POM/4.0.0":dependencies, "maven.apache.org/POM/4.0.0":goals, "maven.apache.org/POM/4.0.0":inherited' 之一是预期的。跨度> @PhilipRego 可能应该在mvn tomcat7:redeploy
按照documentation 的建议试试这个:
(更新参数设置为 true 的部署目标的别名。)
【讨论】:
从 2.1 开始提供【参考方案4】: <plugin>
<!-- tomcat deploy plugin -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server>
<username>XXXX</username>
<password>XXXX</password>
<path>/XXXX</path>
</configuration>
</plugin>
这对我有用:)
环境 -> Windowd 8.1 + Maven 3 + Tomcat 8.1.15 + JDK 1.8 另外,我不得不使用 tomcat:redeploy
另外,通过 -> Preferences->Maven->User Settings 更新您的 maven 设置以指向您的 maven settings.xml 文件。 在 maven settings.xml 中添加服务器的值(服务器部分并在那里添加 tomcat 服务器详细信息)。在这里使用它(对我来说 id 是 TomcatServer )
一些步骤是从这里采取的:- http://kosalads.blogspot.de/2014/03/maven-deploy-war-in-tomcat-7.html
【讨论】:
【参考方案5】:我加了
<server>
<id>tomcat7</id>
<username>admin</username>
<password>admin</password>
</server>
在 user/.m2/settings.xml
我也没有更改 pom.xml、tomcat-users.xml 和 Maven/conf/settings.xml,现在一切正常。
【讨论】:
我认为你的问题是你的 tomcat Maven 配置中的服务器配置。它与用户名/密码设置冲突。在 pom.xml 文件中,您应该删除不应授予具有 manager-gui 角色的用户 manager-script 或 manager-jmx 角色。
所以,用户 admin 应该删除角色“manager-gui”
【讨论】:
这是我的“连接被重置”问题的原因。管理员用户被分配了不正确的 manager-gui 角色。我添加了一个新的经理脚本角色和一个新用户,我的问题就解决了。 为什么不呢?为什么他们不应该同时拥有 manager-gui 和 manager-script?以上是关于Tomcat 7:对等方或软件重置连接导致连接中止的主要内容,如果未能解决你的问题,请参考以下文章
java.net.SocketException:软件导致连接中止:recv 失败,出现 java.net.SocketException:连接重置 [重复]
javax.net.ssl.SSLException:SSL 握手中止连接由对等方重置,同时调用 web 服务 Android
使用tomcat7-maven-plugin进行Tomcat部署失败,并显示错误“无法调用Tomcat管理器:通过对等方重置连接:套接字写入错误”
SSL握手中止:ssl = 0x55ad47e080:系统调用期间的I / O错误,对等方重置连接
IOException:javax.net.ssl.SSLHandshakeException:SSL 握手中止:ssl=0xafdb8e00:系统调用期间的 I/O 错误,对等方重置连接