0

当我的 JSP 文件中出现 NullpointerException 时,这一切都开始了。导致它的行只有一个 Struts 1.3 标签: <html:html>

堆栈跟踪的根本原因是:

java.lang.NullPointerException
java.util.Locale.toString(Unknown Source)
org.apache.el.lang.ELSupport.coerceToString(ELSupport.java:377)
org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:407)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:188)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938)
org.apache.jsp.search_jsp._jspService(search_jsp.java:193)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.servlets.ShowAllJobsServ.doGet(ShowAllJobsServ.java:82)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)

我开始研究,发现 Struts 从会话中检索一个 Locale 对象,以支持 i82n 功能。然后我想:也许会话中没有Locale,毕竟我还没有使用那个功能。我将测试该对象是否为空。所以我写道:

${empty sessionScope["org.apache.struts.action.LOCALE"]}

它打印出来了false

我从同一个对象调用了其他方法,包括 getCountry、getLanguage 和 hashCode。所有这些都导致 NullPointerException。我唯一能成功调用的是getClass。我现在很困惑。

我唯一的猜测是 Locale 对象没有被正确反序列化。我必须说我正在使用MemcachedSessionManager将 Tomcat 会话存储在 Memcached 服务器中,成功地存储了基本的 bean 甚至从 Hibernate 中提取的集合。

如果这还不够奇怪,它可以在我的机器™ 上运行,并且只会在我在 Windows Azure 上部署我的应用程序时造成这种混乱。

有什么线索吗?它甚至有任何意义吗?

4

1 回答 1

0

谈论愚蠢的错误。我在 Windows Azure 上的部署使用 JRE 7,而我在本地机器上使用 JRE 6。我猜 MemcachedSessionManager、Tomcat 6 和 Java 7 不能很好地协同工作:/

于 2012-10-19T22:03:38.380 回答