如題,在項目開發階段,使用了Nginx和tomcat、redis叢集時出現了标題問題
問題還原
使用Nginx代理和tomcat叢集時,通路某頁面,頁面title部分一直在轉圈圈,過了幾秒之後頁面提示如下
看到此畫面,以為出了什麼問題,結果再次通路以下該頁面,效果又正常顯示了
查了下百度,看看有沒有同等問題,浪費了半小時,發現還是沒解決問題,後來自己檢查各項配置
- Nginx配置 在這裡我配置了3通路逾時效果,就是這裡的問題了,在通路頁面3秒之後還沒得到回應,頁面就出現了最開始的畫面,仔細檢查了這幾項配置,再三确認沒有問題。之後跑到了web.xml檔案裡去找問題,最後發現問題。
- web.xml配置
看起來貌似沒有問題,但是仔細想了會,貌似少了啥代碼,想了10幾秒,突然腦海中跳出來了一句話 啟動立即執行
原來是少了這行代碼
容器啟動立即加載,為什麼少了這行代碼就會出現問題呢? -
原因在于
我們需要在伺服器啟動的時候就要立即去加載容器
如果我們不加這行代碼,那麼tomcat一加載,伺服器首先給容器的配置檔案進行加載,但是并沒有給裡面執行個體化對象,servlet相當于剛開始就沒有真實的起作用。
servlet什麼時候才起作用啊?當使用者第一次發起請求的時候,它才開始起作用,這個時候才開始起作用,也就是servlet現在才真正的去加載和執行個體化配置檔案,和裡面的具體資訊,但是,大家要知道,容器啟動的時間并不止3秒(我前面說過的,我的nginx設定的是3秒逾時),那麼3秒時間一到就會報逾時,但是等我們再第二次重新整理的時候,伺服器容器已經啟動好了,是以就沒問題了,是以,歸根結底,隻是少了一行代碼而已
我寫博文主要是為了記錄曾經犯下的錯誤,友善以後忘記了再看看博文還能回想起來
對于某些知識點,或許不是了解的不是很到位,或者寫的不是很到位
大家看看就好,我隻是記錄
謝謝!