管理后台老项目 SSM 框架,任何请求均返回错误码 500

这篇具有很好参考价值的文章主要介绍了管理后台老项目 SSM 框架,任何请求均返回错误码 500。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

管理后台老项目 SSM 框架,任何请求均返回错误码 500

1. 出现问题

  • 管理后台使用:Struts2 + Spring + MyBatis 框架,在某次测试平台重启后,启动成功未抛出异常,但是任何请求均返回错误码 500

2. 解决过程

1. 查看日志

  • 首先登录测试平台 Linux 环境,手动调用一次,然后查看调用异常日志
  • cd 目录
  • tail -f 日志.log ,如果日志量比较大可以使用 tail -f 日志.log | grep -C 20 'Exception'
  • 发现没有抛出异常
  • 然后详细去看调用过程,发现 Action 正常处理了
  • 由于问题之前未出现过,因此尝试重启一次,仍未能解决,然后重启上一次分支,仍然是相同问题

2. 猜测配置有问题

  • 首先猜测是发布配置问题,这个项目是 Struts2 + Spring + MyBatis 的老框架,使用 war 包 + Tomcat 部署
  • 进目录 cd /Java/servers/xxx/conf,查看 server.xml 配置
  • 发现 war 包目录为:<Context docBase="/xxx/Java/deploy/master",对应目录下查看文件是正常的
  • 其次觉得是否是响应端口被占用,还是在 server.xml 中查到
  • <Connector port="9xxx" protocol="HTTP/1.1" connectionTimeout="xxx" redirectPort="8xxx" />
  • <Connector port="8xxx" protocol="AJP/xxx" redirectPort="xxx" />
  • 使用 lsof -i:redirectPort 的值 命令,发现端口未被占用
  • 最后尝试改为其他接口,发现任何接口均返回 500,与配置无关

3. 根据架构图确定问题

  • 根据添加日志显示,Action 执行没问题,查表也有数据,应该是 Struts2 过程中出现的问题

  • 因此根据 struts2 架构
    管理后台老项目 SSM 框架,任何请求均返回错误码 500

  • 应该是过滤器或者拦截器后处理的时候出现的问题

  • 代码搜索 struts.xml,发现仅有自定义拦截器

  • <interceptors> <interceptor name="xxxInterceptor" class="XxxInterceptor" />

  • 查看拦截器 XxxInterceptor.java 代码,发现日志打印到了其他目录(真坑…)

  • 找到对应目录再进行第一步查看日志

  • 发现在 Action 获取结果后,拦截器后置代码,发生了类加载异常,具体去看发现是解析从配置中心获取的 Json 错误

  • 至此,问题已经找到,配置中心 Json 被人改错了文章来源地址https://www.toymoban.com/news/detail-404749.html

3. 解决方案

  • 将配置改成正确的 Json 格式数据,其次在自定义拦截器业务里加异常捕获与规范日志目录
  • 启示:测试环境的配置也要谨慎修改,并且如果发生诡异的异常,可以尝试回顾今天的操作

到了这里,关于管理后台老项目 SSM 框架,任何请求均返回错误码 500的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包