我正在使用Tomcat 7在Eclipse(Helios)中运行java Web应用程序。服务器成功启动(持续时间指示)但是Eclipse的进度条仍然在旋转,说Tomcat正在启动。最终达到超时并抛出错误。
我相信Tomcat很好,因为我已经使用了它使用的命令并在shell中手动运行它。 Tomcat运行正常,我可以在预期的URL上点击Web应用程序。我也可以在它启动之后和超时发生之前点击它。
我重新安装了Eclipse,我用干净运行它,我删除/重新创建了服务器。没有任何效果。有人有任何线索吗?
答案 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)
我找到了答案(就在这里张贴之后,具有讽刺意味的是,似乎是如何找到自己问题的答案。)
答案是该端口正被另一个进程使用。我应该知道但升级了几个不同的包将会这样做。但对于症状:
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 状态。