AppEngine Development Server在JSP中提供StackOverflowError

时间:2012-07-15 20:01:50

标签: google-app-engine eclipse-plugin gae-eclipse-plugin

我在JSP文件中使用以下代码,该文件来自AppEngine serlvet。

<script type="text/javascript" >
    var role = <%= request.getAttribute("role") %>;
</script>

变量是使用以下Servlet设置的:

req.setAttribute("role", role );
req.getRequestDispatcher("index.jsp").forward(req, resp);

代码在AppEngine生产中运行良好,但在本地开发服务器中我立即得到以下内容:

Problem accessing /. Reason:

INTERNAL_SERVER_ERROR
Caused by:

java.lang.StackOverflowError
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)

这就像永远一样。在调试时,我还可以看到Servlet代码被称为无休止的时间。

我发现了一些与AppEngine生产类似问题的引用,但发现AppEngine开发服务器没有可行的修复。

任何想法??

1 个答案:

答案 0 :(得分:0)

您确定要在响应中设置属性吗?

req.setAttribute("role", role );

好像你是在进入servlet的请求中设置它而不是你发送的响应。