鍍金池/ 問答/Linux/ 為什么 tomcat 沒有將字段值返回給 app 端?

為什么 tomcat 沒有將字段值返回給 app 端?

這個問題已經(jīng)發(fā)生過三次了, 雖然已經(jīng)解決, 但還是不明白具體原因是什么.
因此這里發(fā)帖提問!

公司有一個app軟件和主系統(tǒng), app 軟件的數(shù)據(jù)是從主系統(tǒng)的接口查詢獲得, 問題就是這樣, app端查詢到的數(shù)據(jù)中, 有個字段顯示為空, 通過端口截獲工具fiddler顯示, 服務(wù)器根本就沒有將該字段值返回給 app 端.

第一次出現(xiàn)這個問題的時候, 當時剛剛新部署了一個應(yīng)用, 這個新的應(yīng)用是從公司的主系統(tǒng)修改而來, 同時, 這兩個應(yīng)用都部署在同一個tomcat下, 由于應(yīng)用都是基于 ibatis 進行開發(fā), 我當時就懷疑是兩個系統(tǒng)擁有相同的 sql map 語句引起了這個問題, 因此就把新部署的應(yīng)用給停了, 這樣問題就解決了!

第二次出現(xiàn)這個問題的時候, 端口截獲工具fiddler依然顯示, 服務(wù)器根本就沒有將該字段值返回給 app 端.
基于第一次的經(jīng)驗, 我一下子就懷疑是擁有相同的sql map 語句引起, 而這個時候只有一個主系統(tǒng)在運行, 為什么會有相同的 sql map 語句呢?
我懷疑是進行增量更新引起. 更新的時候, 我對服務(wù)器上的 sql map 的xml文件重新命名, 然后把新的 sql map 的xml文件拷貝到服務(wù)器上去, 這樣, ibatis 在加載 sql 語句的時候, 就會同時加載兩個相同的sql map 語句.
這樣就會引起沖突, 從而導致這個問題出現(xiàn).
當時想, 解決問題的辦法很簡單, 把重命名過的sql map的xml文件刪除掉就可以了.
確實如此, 刪除后啟動tomcat, 問題就解決了!

今天早上, 又出現(xiàn)同樣的問題, 端口截獲工具fiddler依然顯示, 服務(wù)器沒有將該字段值返回給 app 端.
基于前兩次的經(jīng)驗, 這下我全糊涂了, 前兩次是因為擁有相同的sql語句引起, 可是現(xiàn)在, 根本就不存在這種情況!
于是登錄到服務(wù)器, 把tomcat的日志翻出來, 找到那條 sql 語句, 重新到navicat運行, 運行后的結(jié)果顯示,那個字段的值是能夠正常查詢出來的, 但是他為什么沒有返回給 app 端呢?

到現(xiàn)在為止, 我根本就不知道出現(xiàn)這個問題的原因是什么?
不過我重啟了下tomcat, 重啟時做了2個動作:
A 清楚tomcat的緩存
B 修改tomcat的日志文件, 強迫tomcat將日志輸出到新的文件中, 因為舊的日志文件有點大了, 80MB.

重啟tomcat后, 問題解決了, 但我真的不知道, 出現(xiàn)這個問題的原因是什么?
哪位前輩有沒有類似的經(jīng)驗? 有的話請說下原因是什么?

回答
編輯回答
真難過

基本上是程序的問題;你需要的是調(diào)試程序找問題。
如上: 提供信息不足。

2017年6月2日 01:27