2017-09-15 51 views
2

有一個很奇怪的問題與Ubuntu下16.x.安裝Tomcat的我們8.0.32Tomcat 8.0.32的奇怪行爲:有時會忽略cookie。它可以以某種方式調試?

這個問題開始發生的意外和一直存在,直到Tomcat服務器重新啓動(所以它是可重複它開始後發生)。

會發生什麼情況,是某些請求通過從適當cookie: JSESSIONID=值JS應用計時器發送不當處理:Tomcat的找不到Session對象爲它(從Spring MVC層這意味着,該用戶沒有被認證)。與所有請求相同的 JSESSIONID被這個破碎的請求之前發送,並且所有請求後被髮(再次與會話ID值相同) - 他們都做工精細!

我們也確實看到,在該請求所有的標題是正確的(他們是我們在一些過濾應用程序打印出來),但Session對象未恢復。

所以基本上,它聽起來就像在某些情況下Tomcat的開始從通過重定向從另一臺服務器發送的請求忽略JSESSIONID。而且,這並非總是如此,只是在網絡應用程序生活一段時間之後。

我不會在這裏提供或配置設置的任何代碼。首先,因爲它看起來像可憐的Tomcat問題,其次,因爲配置是標準的(在apt-install之後開箱即用)。

我的問題是:我們如何配置Tomcat以記錄所有與JSESSIONID處理相關的操作?像那樣,它爲給定的ID找到會話,或者不會,等等。


UPD:這種情況在更新版本的Tomcat 8.5.5中不會發生。但由於某些原因,無法在該特定服務器上進行更新。我目前的目標是收集有關這種行爲的證據,以確保它是一個錯誤,或者一些奇怪的默認配置,即tomcat安裝。

+0

我不太熟悉Tomcat HTTP請求的記錄。通常,我的Java服務器位於逆向代理(如nginx)後面。首先看看Tomcat可以做什麼,如果它不夠,請考慮將nginx(或另一個反向代理)放在兩者之間來提供日誌記錄。 – toongeorges

+0

或者,你的意思是說,nginx代理,保持becat的Tomcat,可以以某種方式處理會話? – Andremoniy

+0

你會把Tomcat放在nginx後面,而不是相反。 Tomcat必須處理它自己的會話。儘管把nginx放在中間,你可以用它來增強日誌記錄。儘管如此,我並不是這方面的專家。 – toongeorges

回答

2

按照文檔https://tomcat.apache.org/tomcat-8.0-doc/logging.html 啓用Tomcat的內部的一部分調試日誌記錄,你應該同時配置相應的記錄器(S)和相應的處理程序(S)使用最好的或全部的水平。例如:

org.apache.catalina.session.level=ALL 
java.util.logging.ConsoleHandler.level=ALL 
+0

Hi @AntonMalyshev。謝謝你的回覆。我應該在哪裏放置這些配置?進入我的應用程序或其他地方的log4j.properties? – Andremoniy

+0

'$ {catalina.base}/conf/logging.properties'或'WEB-INF/classes/logging.properties' –

相關問題