1

IllegalArgumentException:Request header is too largeをグラスフィッシュから時々受け取ります。私はこれを回避する方法を知っています -POSTリクエストに切り替える必要があります。これについては十分な良い記事があります。

しかし、私の問題は、誰がこのリクエストを送ってきたのかわからないことです。このエラー メッセージに詳細を表示する方法はありますか? IPアドレスで十分です。このエラーは、サーブレット コードが処理される前に発生すると思います。そのため、自分で IP アドレスをエラー メッセージに追加することはできません。

ご協力いただきありがとうございます。

4

4 に答える 4

0

1 つの方法は、 を使用して、その中ThreadLocalに のインスタンスをHttpServletRequestリクエスト処理の最初に配置することです (おそらくサーブレット)。Filter

このようにして、エラー ハンドラでHttpServletRequest 、スレッド ローカル変数から のインスタンスを取得し、たとえば、送信者の IP アドレスを確認できます。

于 2012-06-27T09:25:02.140 に答える
0

間違いなく、この場合、リモート アドレスを知るためのロジックを適用するために、制御がアプリケーションに来ることさえありません。使用しているサーバーのみがこれらの情報をログに提供します。

使用しているサーバーは、要求をWeb アクセス ログに記録します。

デフォルトでは、これらのログ エントリには、リクエストを行ったクライアントのリモート アドレスも含まれます。存在しない場合は、Web アクセス ログにリモート アドレスのログを記録する方法をサーバー チームに確認してください。

参考文献:

于 2012-06-27T10:28:39.053 に答える
0

post または put リクエストを実行する場合、回線を介して送信されるデータ サイズに制限がないことを前提としています。

ほとんどの Web サーバーには、これらの値のデフォルト構成があります。デフォルトでは、max-post-size はglassfish 3is8192 bytesおよびglassfish 2.1is です 4096 bytes

の下の http-listener 要素に次のプロパティを追加しますdomain.xml

<property name="maxPostSize" value="">

すでに存在する場合は、値を増やします。

于 2012-06-27T09:29:41.053 に答える
0

アクセスログを有効にすることから始めます。

asadmin set configs.config.server-config.http-service.access-logging-enabled=false

ログ形式も設定する必要があります

asadmin configs.config.server-config.http-service.access-log.format=XXXX

これが問題の追跡に役立つことを願っています

于 2012-06-27T09:42:46.617 に答える