击中java.lang.IllegalStateException:在HttpSession中调用setAttribute()时为null

时间:2019-07-15 07:24:17

标签: java websphere illegalstateexception httpsession

美好的一天,

以下是我的Java代码:

Map< String, Account > accountMap = result.getAccountsMap( );
if ( accountMap != null )
    command.getSession( ).setAttribute( Constants.OA, accountMap ); 

然后,从今天早上开始,它会连续IllegalStateException命中

  

java.lang.IllegalStateException:空   在com.ibm.ws.session.http.HttpSessionImpl.setAttribute(HttpSessionImpl.java:248)   〜[com.ibm.ws.webcontainer.jar:na]         在com.ibm.ws.session.SessionData.putSessionValue(SessionData.java:293)   〜[com.ibm.ws.webcontainer.jar:na]         在com.ibm.ws.session.SessionData.setAttribute(SessionData.java:217)   〜[com.ibm.ws.webcontainer.jar:na]         在com.ibm.ws.session.HttpSessionFacade.setAttribute(HttpSessionFacade.java:169)   〜[com.ibm.ws.webcontainer.jar:na]

我曾尝试在Google上进行搜索,但这似乎是一个非常普遍的例外,而且我不知道我应该如何/在何处继续进行故障排除。

此应用程序在WAS 8.5.5上运行。

有人可以建议我吗?

2 个答案:

答案 0 :(得分:1)

我猜这届会议是无效的。您可以向isRequestedSessionIdValid()添加支票吗?您是从command对象而不是直接从HttpServletRequest对象中拉出它,这意味着它很容易成为旧的无效对象。

答案 1 :(得分:1)

是的,这是由于在无效的会话上调用了该方法:

https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html#setAttribute(java.lang.String,%20java.lang.Object)

HttpServletRequest.getSession(false)那时也应该返回null。