8

我正在使用 Tomcat 7 在 Eclipse (Helios) 中运行一个 java web 应用程序。服务器成功启动(指示持续时间)但是 Eclipse 的进度条仍然旋转,说 Tomcat 正在启动。最终达到超时并引发错误。

我相信 Tomcat 很好,因为我采用了它使用的命令并在 shell 中手动运行它。Tomcat 运行良好,我可以在预期的 URL 中访问 Web 应用程序。我也可以在它启动后和超时发生之前点击它。

我已经重新安装了 Eclipse,我用干净的方式运行它,我删除/重新创建了服务器。没有任何效果。有人有任何线索吗?

4

7 回答 7

7

我遇到了这个问题,似乎 Eclipse 在启动后调用了应用程序 url 以确保它正在运行。

代理客户端 (pshione) 更改了系统代理,因此 eclipse 无法调用起始页并认为应用程序尚未启动!!

我删除了代理,现在它工作正常!

编辑:

当您使用 SSL 启动 tomcat 时也会发生这种情况,但 ssl 认证无效。当您调用无效的 SSL 认证站点时,某些浏览器会确认您是否要访问,但 eclipse 无法连接到您的无效 ssl 站点!我建议使用普通的 http 而不是 https 来测试您的网站。

于 2013-10-23T14:12:25.040 回答
4

此问题与使用 HTTPS 配置但没有 HTTP 连接器的 tomcat 有关。

我在 server.xml 中有这个 SSL 连接器,我在 Eclipse 中的 tomcat 总是显示正在启动

<Connector SSLEnabled="true" asyncTimeout="10000000" clientAuth="false" 
    connectionTimeout="10000000" keepAliveTimeout="10000000" 
    keystoreFile="/opt/config/selfsigned.p12" keystorePass="changeit" 
    keystoreType="PKCS12" maxThreads="200" port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS"/>

我想 Eclipse 使用与服务器的 HTTP 连接来验证 Tomcat 实例是否可用。

我已经解决了这个问题,包括在 server.xml 中重定向到 HTTPS 的附加 HTTP 连接器。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
    redirectPort="443"/>

<Connector SSLEnabled="true" asyncTimeout="10000000" clientAuth="false" 
    connectionTimeout="10000000" keepAliveTimeout="10000000" 
    keystoreFile="/opt/config/selfsigned.p12" keystorePass="changeit" 
    keystoreType="PKCS12" maxThreads="200" port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS"/>

通过此更改,我在 Eclipse 中的 tomcat 开始正确显示调试状态。

于 2018-10-17T14:42:55.353 回答
3

Java 的某些更新会导致 Eclipse 的网络操作出现问题。具体来说,Eclipse 尝试使用 IPv6 而不是 IPv4,但有时会失败。当 Eclipse 启动 Tomcat 时,它所做的最后一步是测试对 Tomcat 的调试调用。这很可能是挂起的部分。幸运的是,修复非常简单。我们只是告诉 Eclipse 使用 IPv4。

为此,请编辑 eclipse.ini 文件(位于 Eclipse 目录中)并将以下内容添加到文件末尾的单独行中:

-Djava.net.preferIPv4Stack=true

重新启动 Eclipse,您应该一切顺利。

于 2013-10-28T13:52:25.030 回答
3

我有同样的问题,这是由于我定义的连接器(我只有一个 AJP 连接器)。

将 HTTP 连接器添加到 Tomcat 的 server.xml 解决了这个问题。

于 2016-07-02T15:46:03.040 回答
1

我找到了答案(就在此处发布之后,具有讽刺意味的是,这似乎是如何找到自己问题的答案。)

答案是该端口正被另一个进程使用。我应该知道,但升级了几个不同的软件包会做到这一点。但就症状而言:

  • Tomcat 启动成功。能够在超时之前点击应用程序。
  • Eclipse 看起来无法确定服务器是已启动还是已停止。

HTTP 当前在默认值 8080 下运行。不幸的是,我的数据存储正在侦听 8080(我的猜测是因为我不太确定它对端口的作用,除了它是为 jmx 分配的)。我猜 Eclipse 无法在 8080 检测到 Tomcat。

于 2011-02-05T05:39:19.527 回答
1

我遇到了这个问题,看来我的 tomcat 版本有问题(tomcat 7.0.23)将您的 tomcat 版本切换到另一个(即 tomcat 7.0.14)它对我有用。

祝你好运

于 2012-01-11T13:54:56.927 回答
0

如果两个 servlet 已映射到同一个请求 URL,则可能会发生这种情况,Tomcat 将正常启动,但 eclipse 将无法生成正确的 web.xml 文件,因此无法发布 webApp。检查您的 servlet 映射@WebServlet("\TheURLThatShouldInvokeThisServlet"),确保两个 servlet 没有相同的“TheURLThatShouldInvokeThisServlet”。

(记录在案!)

于 2013-04-25T00:54:57.683 回答