为什么 tomcat 没有将字段值返回给 app 端?

这个问题已经发生过三次了, 虽然已经解决, 但还是不明白具体原因是什么.
因此这里发帖提问!

公司有一个app软件和主系统, app 软件的数据是从主系统的接口查询获得, 问题就是这样, app端查询到的数据中, 有个字段显示为空, 通过端口截获工具fiddler显示, 服务器根本就没有将该字段值返回给 app 端.

第一次出现这个问题的时候, 当时刚刚新部署了一个应用, 这个新的应用是从公司的主系统修改而来, 同时, 这两个应用都部署在同一个tomcat下, 由于应用都是基于 ibatis 进行开发, 我当时就怀疑是两个系统拥有相同的 sql map 语句引起了这个问题, 因此就把新部署的应用给停了, 这样问题就解决了!

第二次出现这个问题的时候, 端口截获工具fiddler依然显示, 服务器根本就没有将该字段值返回给 app 端.
基于第一次的经验, 我一下子就怀疑是拥有相同的sql map 语句引起, 而这个时候只有一个主系统在运行, 为什么会有相同的 sql map 语句呢?
我怀疑是进行增量更新引起. 更新的时候, 我对服务器上的 sql map 的xml文件重新命名, 然后把新的 sql map 的xml文件拷贝到服务器上去, 这样, ibatis 在加载 sql 语句的时候, 就会同时加载两个相同的sql map 语句.
这样就会引起冲突, 从而导致这个问题出现.
当时想, 解决问题的办法很简单, 把重命名过的sql map的xml文件删除掉就可以了.
确实如此, 删除后启动tomcat, 问题就解决了!

今天早上, 又出现同样的问题, 端口截获工具fiddler依然显示, 服务器没有将该字段值返回给 app 端.
基于前两次的经验, 这下我全糊涂了, 前两次是因为拥有相同的sql语句引起, 可是现在, 根本就不存在这种情况!
于是登录到服务器, 把tomcat的日志翻出来, 找到那条 sql 语句, 重新到navicat运行, 运行后的结果显示,那个字段的值是能够正常查询出来的, 但是他为什么没有返回给 app 端呢?

到现在为止, 我根本就不知道出现这个问题的原因是什么?
不过我重启了下tomcat, 重启时做了2个动作:
A 清楚tomcat的缓存
B 修改tomcat的日志文件, 强迫tomcat将日志输出到新的文件中, 因为旧的日志文件有点大了, 80MB.

重启tomcat后, 问题解决了, 但我真的不知道, 出现这个问题的原因是什么?
哪位前辈有没有类似的经验? 有的话请说下原因是什么?

阅读 1.8k
1 个回答

基本上是程序的问题;你需要的是调试程序找问题。
如上: 提供信息不足。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进