2012-04-17 51 views
0

我有一個Tomcat應用程序正在運行,出於某種原因,我的一個servlet正在被擱置,而所有其他人都在響應請求時執行。爲Tomcat如何調試tomcat請求線程?

我的連接器的配置:

<Connector port="8008" protocol="HTTP/1.1" 
maxThreads="50" minSpareThreads="5" maxSpareThreads="50" 
    enableLookups="false" acceptCount="100" 
      connectionTimeout="20000" 
      redirectPort="8443" 
      compression="off" 
      allowTrace="true" 
compressionMinSize="128" 
noCompressionUserAgents="gozilla, traviata" 
compressableMimeType="text/html,text/xml,text/x-gwt-rpc; charset=utf-8,application/json; charset=utf-8,application/javascript" /> 

我GWT RPC的servlet保持在正在執行一個很長的請求響應。但是我在GWT之外創建了一個servlet(即一個普通的舊servlet),並且當我向這個servlet發送請求時,它將不會響應,直到長GWT請求結束。它實際上並沒有開始執行(我添加了日誌來看它是否真的開始執行,直到日誌gwt請求結束)。

如何調試Tomcat實例的線程池/入站請求隊列?

+2

您是否在使用Eclipse或NetBeans等IDE?如果是這樣,您可以在打開調試的情況下啓動Tomcat,然後遠程連接,並在需要的地方設置斷點。你還需要有Tomcat源代碼。但是如何設置它,如果你沒有遠程調試的經驗,可能超出了SO的答案。 – 2012-04-18 00:03:18

+0

在非gwt servlet請求正在等待查看它正在做什麼時執行線程轉儲。 – sourcedelica 2012-04-18 03:25:48

+0

如何做線程轉儲? – 2012-04-18 12:58:04

回答

1

看看你的IDE調試設置。

例如,在IntelliJ IDEA的,你需要在breakpoint settings改變掛起政策主題。這意味着只有停止斷點的線程將被阻塞,而其他線程將繼續正常運行。