Eclipse中的Tomcat:无论如何它在运行期间运行但是超时

时间:2011-02-05 05:21:38

标签: java eclipse web-applications tomcat7

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

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

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

7 个答案:

答案 0 :(得分:5)

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

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

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

编辑:

使用SSL启动tomcat时也会发生这种情况,但ssl认证无效。当你打电话给无效的SSL认证网站时,有些浏览器会确认你是否想去一个,但是eclipse无法连接到你的无效ssl网站!我建议使用普通的http而不是https来测试您的网站。

答案 1 :(得分:3)

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

为此,编辑eclipse.ini文件(在Eclipse目录中找到)并将以下内容添加到文件末尾:

-Djava.net.preferIPv4Stack=true

重启Eclipse,你应该好好去。

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

答案是该端口正被另一个进程使用。我应该知道但升级了几个不同的包将会这样做。但对于症状:

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

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

答案 4 :(得分:1)

我遇到了这个问题,似乎我的tomcat版本是buggy(tomcat 7.0.23) 将你的tomcat版本切换到另一个(即tomcat 7.0.14)它对我有用。

祝你好运

答案 5 :(得分:0)

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

(把它作为记录!)

答案 6 :(得分:0)

此问题与配置了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实例是否可用。

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

<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开始正确显示 Debugging 状态。