Con Tomcat 7, è possibile aggiungere StuckThreadDetectionValve che consente di identificare i thread "bloccati".È possibile set-up della valvola nell'elemento contesto delle applicazioni in cui si desidera fare il rilevamento:
<Context ...>
...
<Valve
className="org.apache.catalina.valves.StuckThreadDetectionValve"
threshold="60" />
...
</Context>
Questo sarebbe scrivere un WARN ingresso nel Tomcat di log per tutti i thread che richiede più di 60 secondi, che avrebbe consente di identificare le applicazioni e vietarle perché sono difettose.
In base allo source code potresti essere in grado di scrivere la tua valvola che tenta di interrompere il thread, tuttavia ciò avrebbe effetti di trascinamento sul pool di thread e c'è no reliable way di arresto di un thread in Java senza la cooperazione di quello filo ...
State usando '' Socket' e ServerSocket'? perché se lo sei, puoi impostare il timeout con il metodo 'SetSoTimeout'. –
Just plain tomcat –
@Eran, sta sviluppando un'applicazione web. Non può accedere al socket del server aperto da Tomcat. – AlexR