【发布时间】:2016-11-20 15:55:06
【问题描述】:
我有以下utility 函数来从cookie 获取价值:
public static long getClientTimezoneOffset(HttpServletRequest request)
{
long timeZoneOffset = 0;
if(request != null)
{
Cookie[] cookies = request.getCookies(); // throws null pointer exeception from here
if(cookies != null)
{
for(Cookie cookie : cookies)
{
if(cookie.getName().equals("timezoneOffset"))
{
try
{
timeZoneOffset = Long.parseLong(cookie.getValue());
}
catch (Exception ex)
{
ex.printStackTrace();
}
break;
}
}
}
}
return timeZoneOffset;
}
java.lang.NullPointerException at org.apache.catalina.connector.Request.parseCookies(Request.java:2943) at org.apache.catalina.connector.Request.convertCookies(Request.java:2958) at org.apache.catalina.connector.Request.getCookies(Request.java:1987) at org.apache.catalina.connector.RequestFacade.getCookies(RequestFacade.java:662) at javax.servlet.http.HttpServletRequestWrapper.getCookies(HttpServletRequestWrapper.java:69) at javax.servlet.http.HttpServletRequestWrapper.getCookies(HttpServletRequestWrapper.java:69) at javax.servlet.http.HttpServletRequestWrapper.getCookies(HttpServletRequestWrapper.java:69) at javax.servlet.http.HttpServletRequestWrapper.getCookies(HttpServletRequestWrapper.java:69)
我检查了request 对象,它不是NULL。它并不总是抛出exception,但有时。这就是为什么很难弄清楚实际问题的原因。
我已经检查过有关此的类似帖子,但没有任何帮助。任何帮助表示赞赏。
【问题讨论】:
-
“它并不总是抛出异常,但有时”对我来说听起来很奇怪。 NPE有消息吗?
-
对不起。这个首字母缩略词
NPE是用来做什么的? @AndrewTobilko -
我已经发布了完整堆栈跟踪的一部分。我应该发布完整的吗?
-
我认为,在这种情况下,你需要
-
这几乎肯定是应用程序存储对
HttpServletRequest的引用超过请求有效时间的问题。我建议您 (a) 升级到 8.0.latest 并 (b) 修复您的应用。
标签: java tomcat servlets nullpointerexception session-cookies