我偶尔从glassfish得到一个IllegalArgumentException:Request header is too large
。
我知道如何解决这个问题 - 需要切换到POST
请求。关于这一点有足够好的文章。
但我的问题是我不知道是谁向我发送了此请求。 有没有办法将更多细节放入此错误消息? IP地址就足够了。 我想这个错误发生在我的servlet代码处理之前。 因此,我无法通过自己将错误消息添加到IP地址中。
感谢您的帮助。
答案 0 :(得分:0)
一种方法是使用ThreadLocal
并在请求处理开始时将HttpServletRequest
的实例放入其中(或许是servlet Filter
)。
这样,在错误处理程序中,您可以从线程局部变量中获取HttpServletRequest
的实例,并且 - 例如 - 检查发件人的IP地址。
答案 1 :(得分:0)
当执行post或put请求时,假设没有通过线路发送的数据大小的限制。
大多数Web服务器都具有这些值的默认配置。默认情况下,glassfish 3
中的最大帖子大小为8192 bytes
,glassfish 2.1
为4096 bytes
domain.xml
将以下属性添加到<property name="maxPostSize" value="">
下的http-listener元素:
{{1}}
如果已经存在,请增加该值。
答案 2 :(得分:0)
我将从启用访问日志记录开始:
asadmin set configs.config.server-config.http-service.access-logging-enabled=false
您还应该使用
设置日志记录格式
asadmin configs.config.server-config.http-service.access-log.format=XXXX
希望这有助于追踪问题
答案 3 :(得分:0)
在这种情况下,控件甚至不会向应用程序申请一些逻辑来了解远程地址。只有您使用的服务器会在日志中提供这些信息。
您使用的任何服务器都会在网络访问日志中记录请求。
默认情况下,这些日志条目还将具有发出请求的客户端的远程地址。如果它不存在,请与服务器团队联系,了解如何配置在Web访问日志中记录远程地址。
<强>参考文献:强>