Tomcat 启动始终为preparing launch delegate状态问题解决(Dubbo相关)

问题:

Tomcat 启动时始终保持在“preparing launch delegate”状态,启动进程不能继续,最后导致超时退出。在网上搜索了很多的相关解答,包括修改Eclipse配置、Internet设置,删除Eclipse tomcat 服务器配置重建,使用Tomcat 8等等,均不能解决问题。

后来将应用放在Tomcat webapp目录下启动,发现启动进程也卡在那里不动。后来怀疑是DUBBO配置文件的问题,将Dubbo配置文件删除,应用能正常启动,加上去就不好使了,通过查询资料,发现也有网友碰到过类似问题,原因为Zookeeper未启动,Dubbo服务注册不上所致。于是排查Zookeeper的2181端口是否启动,结果发现该端口确实未启动。

下面为dubbo的部分配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://code.alibabatech.com/schema/dubbo
            http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="xy" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.1.42:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20883" />

      <!-- 服务省略-->
 </beans> 

解决:

启动Zookeeper,保证配置文件中配置的address 地址能通(通过telnet  [IP] [PORT]命令探测有无响应)。最后,应用顺利启动。

后记:

这个Dubbo服务若注册不上,就一直卡在那里,既不报错误信息,也不超时,确实太坑了。程序不怕报错,而是拍不报错,不报错的程序问题是最难查的。

不知道Dubbo有无相关的配置能避免这样的问题发生。



posted @ 2017-07-11 19:39  hongweigg  阅读(26)  评论(0)    收藏  举报