2012-10-19 79 views
0

當我在我的JSP文件中遇到NullpointerException時,它全部開始。該生產線導致它只有一個Struts 1.3標籤: <html:html>可能損壞的java.util.Locale導致NullPointerException

從堆棧跟蹤的根本原因是這樣的:

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,畢竟我還沒有使用該功能。我會測試對象爲null。所以我寫道:

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

和它打印false

我從同一個對象調用了其他方法,包括getCountry,getLanguage和hashCode。所有導致NullPointerException。我唯一可以成功調用的是getClass。我現在很困惑。

我唯一的猜測是,不知何故Locale對象沒有正確反序列化。我必須說我正在使用MemcachedSessionManager將Tomcat會話存儲在Memcached服務器中,成功存儲基本Bean以及從Hibernate取得的集合。

如果這並不夠奇怪,它可以在我的機器上運行,並且只會在我將應用程序部署到Windows Azure上時造成混亂。

任何線索?它甚至有什麼意義?

回答

0

談論愚蠢的錯誤。我在Windows Azure上部署的是使用JRE 7,並在本地機器上使用JRE 6。我猜MemcachedSessionManager,Tomcat 6和Java 7在一起工作不太好:/