在虚拟机windows server 2016中部署了tomcat服务,客户机刷新会出现404问题,在服务器中的浏览器访问都是正常的,用客户机访问,功能也正常,但是会出现刷新之后,就报页面无法找到问题。项目在其他机器或虚拟机中安装windows server 2016系统均正常使用。
(0)
看下CPU 内存正常吗
验证虚拟机网络配置
# 允许Tomcat端口通过防火墙(Windows Server 2016)
netsh advfirewall firewall add rule name="Tomcat" dir=in action=allow protocol=TCP localport=8080
检查Tomcat会话与请求处理
conf/web.xml
中 <session-config>
的 <session-timeout>
值(例如设为60分钟),避免刷新时会话过期导致路径失效排查部署路径与文件权限
webapps
目录,且目录名与访问URL路径一致(如 webapps/myapp
对应 http://虚拟机IP:端口/myapp
)webapps
目录结构,确保无文件缺失webapps
目录 → 属性 → 安全 → 为 SYSTEM
和 Users
组添加 完全控制权限,避免Tomcat进程因权限不足无法读取资源分析Tomcat日志定位错误
logs
目录下打开 catalina.log
和 localhost.log
,过滤 404
错误记录,确认缺失的具体资源路径或Servlet映射问题2025-03-18 10:00:00 ERROR [http-nio-8080-exec-1] org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myapp]
Servlet.service() for servlet [dispatcher] threw exception: File not found
dispatcher
Servlet映射错误或静态资源路径未正确配置修正Servlet映射与web.xml配置
<servlet>
和 <servlet-mapping>
标签中定义的类名和URL路径与实际代码一致,避免因大小写或拼写错误导致<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>com.example.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
web.xml
中添加配置,允许Tomcat默认Servlet(DefaultServlet
)处理静态文件(如JS、CSS):<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
调整虚拟机资源分配
bin/catalina.bat
,调整JVM堆大小:set JAVA_OPTS=-Xms512m -Xmx2048m -XX:MaxPermSize=512m
模拟客户机请求
curl
)从客户机发送请求,验证稳定性:curl -I http://虚拟机IP:端口/myapp/index.html
200 OK
而非 404
持续监控网络流量
Wireshark
,捕获客户机请求数据包,分析是否存在TCP重传或RST异常,排查网络抖动导致的连接中断该问题可能由 虚拟机网络模式配置不当 或 Tomcat会话/静态资源映射缺陷 导致。优先检查桥接模式与防火墙规则,其次分析日志修正Servlet映射。若仍无效,建议对比正常环境的Tomcat配置(如 server.xml
、web.xml
),逐步排除差异点。
(0)
cpu和内存在服务器机器上是正常的,但是CVM管理端看到的是空的。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
cpu和内存在服务器机器上是正常的,但是CVM管理端看到的是空的。