2012-06-11 11 views
6

Nel nostro sistema (sistema chiuso, applicazione web java in tomcat 6 come server, client java fat) i nostri client mostrano occasionalmente risposte "400 - Bad Request". Vorrei eseguire il debug di questo sul lato server, ma dal momento che le richieste sembrano non essere valide, non le vedo da nessuna parte. Ho configurato AccessLogValve per l'host tomcat completo, ma le richieste non sono visualizzate lì. Non vedo nemmeno nulla in catalina.out.Come registrare/eseguire il debug di richieste non valide in tomcat?

Mi piacerebbe ricevere queste richieste registrate e sarebbe ancora meglio scaricare le richieste in base a determinati criteri.

Qualche idea?

mio server.xml assomiglia a questo:

<Server port="8005" shutdown="SHUTDOWN"> 
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" /> 
    <Listener className="org.apache.catalina.core.JasperListener" /> 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> 
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
    <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" 
rmiServerPortPlatform="9098" 
rmiRegistryPortPlatform="9099" 
useLocalPorts="true" /> 
    <Service name="Catalina"> 
    <Connector port="8020" protocol="HTTP/1.1" redirectPort="8010" connectionTimeout="20000" /> 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="cc1"> 
     <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" 
     deployOnStartup="true" xmlValidation="false" xmlNamespaceAware="false"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" 
       directory="logs" prefix="access_log." 
       suffix=".txt" pattern="combined" resolveHosts="false" /> 
     </Host> 
    </Engine> 
    </Service> 
</Server> 

risposta

1

molto tempo fa - ma in ogni caso: Tomcat ha diverse valvole che possono aiutare a raggiungere questo obiettivo: http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Request_Dumper_Valve

Un'altra opzione sarebbe quella tcpdump dal momento che è HTTP e un codice di risposta sembra possibile filtrare le richieste non elaborate che causano questo.

+0

RequestDumperValve è una buona soluzione per il debug, ma si prende cura di alcuni problemi che si verificano con esso. Gli Umlauts sono modificati, ad esempio: https://issues.apache.org/bugzilla/show_bug.cgi?id=40177 –

+0

RequestDumperValve sembra essere stato rimosso in Tomcat 7. –

Problemi correlati