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有无相关的配置能避免这样的问题发生。

浙公网安备 33010602011771号