google-app-engine - AppEngine 开发服务器在 JSP 中给出 StackOverflowError

标签 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 开发服务器的可行修复程序。

有什么想法吗?

最佳答案

当使用 Google App Engine 从 servlet 转发到 JSP 时,我遇到了类似的问题,甚至没有显式设置任何变量,我所拥有的只是这行:

req.getRequestDispatcher("game.jsp").forward(req, resp);

就我而言,结果是因为在 web.xml 中我有以下行(注意包罗万象的 url 模式:

<servlet-mapping>
    <servlet-name>GameServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

我认为这也捕获了 JSP 路径并因此循环。当我改变它时,它也不是包罗万象的。如:

<servlet-mapping>
    <servlet-name>GameServlet</servlet-name>
    <url-pattern>/game</url-pattern>
</servlet-mapping>

关于google-app-engine - AppEngine 开发服务器在 JSP 中给出 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495170/

相关文章:

python - GAE Python 中的 CSS 编译器

java - 如何从 Eclipse 中的另一个插件调用插件方法?

android - 创建版本 android apk 时出现 Proguard 异常

google-app-engine - 如何删除 Go 上应用引擎中的所有 Blob?

python - Google App Engine python 入站邮件 LookupError : unknown encoding

java - 如何创建 OpenFire 插件

java - 如何向 Eclipse Project Explorer 工具栏添加按钮?

java - Google Eclipse 插件在 Google Cloud Endpoints 中的方法干扰

java - spring + GAE对spring容器的不正确初始化

google-app-engine - GAE : Why do I experience loading requests even though I have fixed the number of instances to exactly one?