2012-06-11 15 views
6

私たちのシステム(クローズドシステム、Tomcat 6のjava Webアプリケーション、サーバーとしてのJavaのfatクライアント)では、クライアントは時々 "400 - Bad Request"応答を表示します。私はサーバー側でこれをデバッグしたいと思いますが、リクエストが無効であるようだからどこにも表示されません。完全なTomcatホスト用にAccessLogValveを設定しましたが、要求はそこに表示されません。私はcatalina.outで何も見ない。Tomcatで不正なリクエストを記録/デバッグする方法は?

私はこれらの要求をログに記録し、特定の基準に基づいて要求をダンプすることをお勧めします。

アイデア?

私のserver.xmlは次のようになります。昔

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

答えて

1

- とにかくしかし:Tomcatはそれを達成するのを助けることができる別のバルブがあります:それはあるので、http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Request_Dumper_Valve

を別のオプションは、tcpdumpのだろうHTTPとそれを引き起こす生のリクエストをフィルタリングすることが可能なレスポンスコードです。

+0

RequestDumperValveはデバッグには適していますが、発生するいくつかの問題を処理します。 Umlautが変更されています。例:https://issues.apache.org/bugzilla/show_bug.cgi?id=40177 –

+0

RequestDumperValveはTomcat 7で削除されたようです。 –

関連する問題