tomcat启动项目时一直卡住无反应的解决方案

本文详细解析了Tomcat启动过程中可能遇到的多种故障场景,包括数据库连接问题、日志配置缺失、消息队列配置不当等,并提供了具体的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于tomcat启动项目时一直卡住无反应的场景之一:

 最近碰到一次项目启动半天没反应,也不报错,项目在其它电脑上能正常启动运行。日志中有时候会报数据库连接超时,有时候会报类似于接连池问题。

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Caused by: java.net.ConnectException: Connection timed out: connect

 

最终问大神找到原因,是系统没有打开telnet.   然而我其它电脑也没有开这个功能也照样运行。不知道什么造成这样的结果 

 

telnet

       搭建或配置网络环境时,经常会使用ping命令检查网络是否可达。有些时候Ping命令也不好使,比如因防火墙禁止或访问策略限制等。则可使用telnet测试映射端口或远程访问主机。

     Telnet协议是TCP/IP协议族的其中之一,是Internet远程登录服务的标准协议和主要方式,常用于网页服务器的远程控制,可供使用者在本地主机运行远程主机上的工作。

启用telnet

       操作过程:点击"开始"→"控制器面板"→" 查看方式:类型"则点击"程序"("查看方式:大图标"则点击"程序和功能")→ "启动或关闭windows功能"→ 在"Windows功能"界面勾选Telnet服务器。
https://blog.youkuaiyun.com/sosozha/article/details/85014735

 

加入log4j日志,debug级别查看:

https://blog.youkuaiyun.com/u013870094/article/details/79518028

log4j.properties:

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info, stdout

很简单,加入log4j日志,debug级别 ,查看为啥。

结果发现 就是 日志配置文件没加。。。一直卡住

 

tomcat 启动卡住不动的场景三:

启动tomcat , 控制台停在这个地方不动了 

[2018-10-10] 11:20:11.551 assets- [RMI TCP Connection(3)-127.0.0.1]-[DefaultServerProvider.java:109]-[INFO] Environment is set to [dev] by JVM system property 'env

 

没有任何报错,郁闷。

既然是卡住了,那就是在访问某个东西的时候一直没有响应,而tomcat 却不放弃,一直重试。。

可能是数据库、缓存以及消息中间件等都是有可能的。

想到可能是数据库请求的原因,一般我们开发中必须要链接数据库。。

于是想到用 JVisualVm 查看线程情况

看到 Druid  有多个线程,状态为休眠和驻留。。

看来是数据库无法链接的原因了。。。以后遇到类似问题,可以考虑 java 自带的一些工具。。如visualvm

 

消息队列 ActiveMQ 造成 Tomcat 启动卡住

https://hacpai.com/article/1530777741707

项目中引入消息队列 ActiveMQ 造成 Tomcat 启动不了,一直处于假死状态,其相关配置如下:

     <!-- 配置消息中间件ActiveMQ的连接工厂 -->
     <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="failover:${activemq_url}"></property>
     </bean>

<!-- 配置消息中间件ActiveMQ的连接工厂 --> <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="failover:${activemq_url}"/> </bean>

原因解释:
    上述配置的 property 中 brokenURL 的 value 的failover代表的意思是失效重连,Tomcat 在启动的时候会一直去连接 ActiveMQ,如果 ActiveMQ 不可用,这样就会导致 Tomcat 一直卡在那里。

解决方法:
一. 修改配置

  1. 加上maxReconnectAttempts参数,其代表的意思是重连次数
     <!-- 配置消息中间件ActiveMQ的连接工厂 -->
     
<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="failover:(${activemq_url})?maxReconnectAttempts=10"></property>
     </bean>
  2. 删除failover参数
   
  <!-- 配置消息中间件ActiveMQ的连接工厂 -->
     <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="${activemq_url}"></property>
     </bean>

1. 加上maxReconnectAttempts参数,其代表的意思是重连次数 <!-- 配置消息中间件ActiveMQ的连接工厂 --> <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="failover:(${activemq_url})?maxReconnectAttempts=10"/> </bean> 2. 删除failover参数 <!-- 配置消息中间件ActiveMQ的连接工厂 --> <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="${activemq_url}"/> </bean>

 

排除各个可能导致不停的访问出错导致的卡住,在循环访问

直接关掉那些不停访问的程序

 

 

 

 

 

 

 

 

 

<think>好的,用户遇到了Tomcat启动后文件不可访问的问题。我需要根据提供的引用资料来分析可能的原因解决方案。首先,用户提到Tomcat在Eclipse中可以启动,但浏览器访问返回404,其他项目页面也不行。这可能和部署路径或配置有关。根据引用[1],可能需要检查Eclipse中的部署路径是否正确,或者项目是否未正确部署到webapps目录。此外,引用[3]提到日志文件权限问题,需要确认Tomcat的工作目录是否有足够的权限,尤其是work目录下的文件,可能需要删除这些文件后重启。 接下来,用户可能使用Docker启动Tomcat,但无法访问首页。引用[2]和[5]指出,镜像版本可能导致问题。例如,Tomcat 8.5.51及更高版本默认webapps目录为空,而欢迎页放在webapps.dist中。解决方案是复制这些文件到webapps目录或使用旧版本镜像如8.5.32。需要提醒用户检查镜像版本并调整配置。 另外,引用[4]提到Tomcat启动卡住可能与资源冲突或配置错误有关,比如端口被占用或server.xml配置错误。需要检查端口占用情况,并查看日志文件是否有异常信息。可能还需要检查防火墙或安全组设置,确保8080端口开放。 综合这些可能的原因解决方案应包括检查部署路径、镜像版本、目录结构、权限设置、端口占用和日志分析。需要分步骤引导用户排查每个可能性,并提供具体的操作命令,如修改Docker镜像版本、复制目录文件、删除临文件等。同,提醒用户查看日志以获取更多错误信息,帮助定位问题根源。</think>### Tomcat启动后文件不可访问的原因解决方案 #### 一、可能原因分析 1. **部署路径问题** Eclipse中Tomcat可能未正确部署项目到$webapps$目录,导致文件无法访问[^1]。例如,项目实际部署路径与配置不一致。 2. **镜像版本问题(Docker环境)** 使用高版本Tomcat镜像(如$tomcat:8.5.51$),默认$webapps$目录为空,文件存放在$webapps.dist$中[^5]。 3. **权限不足** Tomcat的工作目录(如$tomcat\work\Catalina\localhost$)存在权限问题,导致文件访问被拒绝[^3]。 4. **端口或配置冲突** Tomcat启动端口被占用,或$server.xml$配置错误,导致服务未完全启动[^4]。 5. **临文件残留** $work$目录中的缓存文件未清理,可能引发访问异常。 --- #### 二、解决方案步骤 1. **检查部署路径(Eclipse环境)** - 在Eclipse中右键项目 → 选择`Properties` → 查看`Web Project Settings`中的部署路径 - 确认项目已部署到$webapps$目录下,或手动复制项目文件到$tomcat/webapps$[^1] 2. **调整Docker镜像版本** ```yaml # docker-compose.yml示例 services: tomcat: image: tomcat:8.5.32 # 改用包含完整webapps的旧版本[^2] ports: - "8080:8080" ``` 或进入容器执行: ```bash docker exec -it <容器ID> cp -r webapps.dist/* webapps/ ``` 3. **清理缓存与权限修复** - 删除$tomcat\work\Catalina\localhost$下的所有项目文件夹 - 对Tomcat安装目录执行权限修正(Linux示例): ```bash chmod -R 755 /opt/tomcat/ ``` 4. **验证端口与日志** - 检查端口占用: ```bash netstat -ano | findstr :8080 ``` - 查看日志定位异常: ```bash tail -f tomcat/logs/catalina.out ``` 5. **补充操作(Docker环境)** - 确保容器已正确映射端口: ```bash docker run -d -p 8080:8080 --name tomcat tomcat:8.5.32 ``` - 检查防火墙设置: ```bash iptables -L -n | grep 8080 # Linux netsh advfirewall firewall show rule name=all | findstr 8080 # Windows ``` --- #### 三、典型错误场景对照 | 现象 | 对应解决方案 | |---------------------------|---------------------------| | 访问返回404且日志无错误 | 检查Docker镜像版本[^5] | | 日志显示"Permission denied" | 执行目录权限修复 | | 启动后无响应 | 清理work目录+检查端口占用[^4] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值