从glassfish获取系统错误时请参阅请求源

时间:2012-06-27 09:07:21

标签: java servlets glassfish glassfish-3

我偶尔从glassfish得到一个IllegalArgumentException:Request header is too large。 我知道如何解决这个问题 - 需要切换到POST请求。关于这一点有足够好的文章。

但我的问题是我不知道是谁向我发送了此请求。 有没有办法将更多细节放入此错误消息? IP地址就足够了。 我想这个错误发生在我的servlet代码处理之前。 因此,我无法通过自己将错误消息添加到IP地址中。

感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

一种方法是使用ThreadLocal并在请求处理开始时将HttpServletRequest的实例放入其中(或许是servlet Filter)。

这样,在错误处理程序中,您可以从线程局部变量中获取HttpServletRequest的实例,并且 - 例如 - 检查发件人的IP地址。

答案 1 :(得分:0)

当执行post或put请求时,假设没有通过线路发送的数据大小的限制。

大多数Web服务器都具有这些值的默认配置。默认情况下,glassfish 3中的最大帖子大小为8192 bytesglassfish 2.14096 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访问日志中记录远程地址。

<强>参考文献: