2012-06-11 14 views
6

En nuestro sistema (sistema cerrado, aplicación web java en tomcat 6 como servidor, clientes gordos java) nuestros clientes muestran ocasionalmente respuestas de "400 - Solicitud incorrecta". Me gustaría depurar esto en el lado del servidor, pero dado que las solicitudes parecen no ser válidas, no las veo en ningún lado. Configuré AccessLogValve para el host completo de tomcat, pero las solicitudes no aparecen allí. Ni siquiera veo nada en catalina.out.Cómo iniciar sesión/depurar solicitudes incorrectas en tomcat?

Me encantaría que se registren estas solicitudes y aún mejor sería volcar las solicitudes según ciertos criterios.

¿Alguna idea?

Mi server.xml se parece a esto:

<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> 

Respuesta

1
hace

mucho tiempo - pero de todos modos: Tomcat tiene diferentes válvulas que pueden ayudar a lograr que: http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Request_Dumper_Valve

Otra opción sería tcpdump ya que es HTTP y un código de respuesta parece que es posible filtrar las solicitudes crudas que causan esto.

+0

RequestDumperValve es una buena solución para la depuración, pero soluciona algunos problemas que se presentan con ella. Los Umlauts se modifican, por ejemplo: https://issues.apache.org/bugzilla/show_bug.cgi?id=40177 –

+0

RequestDumperValve parece haberse eliminado en Tomcat 7. –

Cuestiones relacionadas