我在GAE中遇到了一个独特的问题。请注意我在下面描述的问题仅在我将代码部署到GAE但在本地工作正常时...请帮助人....
我有一个servlet代码,它在session属性中设置一个List对象,并将请求转发给JSP,如下所示:
HttpSession session=request.getSession();
session.setAttribute("msgListS", msgList);
request.getRequestDispatcher("/WEB-INF/jsp/downloadpdf.jsp").forward(request, response);
在jsp ....我正在获取List并打印它的大小,然后点击链接我调用另一个servlet。 JSP代码如下:
List<Message> msgList=(List<Message>)session.getAttribute("msgListS");
out.println("The total messages are : "+msgList.size());
session.setAttribute("msgListS", msgList);
现在在最后一个servlet中我再次获取List对象,但是这里的大小与列表的实际大小不同。在jsp中它显示正确,但在这个servlet中显示大小为1.请帮助.... servlet代码:
HttpSession session=request.getSession(false);
List<Message> msgList=(List<Message>)session.getAttribute("msgListS");
out.println("The total messages are : "+msgList.size());
On local machine it is working absolutely fine but GAE has above problem :(
答案 0 :(得分:1)
您确定正确接收会话吗?我的理解是你应该这样得到它:
this.getThreadLocalRequest().getSession();
这就是我所做的和推荐的Google AppEngine Session Example
此处还有更多讨论
When and how should I use a ThreadLocal variable?
显示潜在的缺点(内存泄漏)......不确定它是否适用虽然我只是为了参考而提及它。