Hallo

I've got a basic site that just display objects within a table inside
the datastore. The site works when I use the demo server packaged with
the eclipse plugin, but not when I deploy the site live at the google
app engine.

As soon as I return the data from the servlet to my jsp I get the
following traceback:

Uncaught exception from servlet
java.lang.StackOverflowError
        at java.util.HashMap.removeEntryForKey(Unknown Source)
        at java.util.HashMap.remove(Unknown Source)
        at org.mortbay.util.AttributesMap.removeAttribute(AttributesMap.java:
51)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.setAttribute(Dispatcher.java:441)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.removeAttribute(Dispatcher.java:461)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.setAttribute(Dispatcher.java:441)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.removeAttribute(Dispatcher.java:461)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.setAttribute(Dispatcher.java:441)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.removeAttribute(Dispatcher.java:461)
        at org.mortbay.jetty.servlet.Dispatcher
$ForwardAttributes.setAttribute(Dispatcher.java:441)

and it just loop the above till the page is full.

my JSP file:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="com.google.appengine.api.users.User" %>
<%@ page import="net.qsens.healthwindow.webmonitor.object.Log" %>
<%@ page import="java.util.List" %>

<%
  User user = (User) request.getAttribute("user");
  String authURL = (String) request.getAttribute("authURL");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://
www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<title>QSENS Web Monitor</title>
</head>
<body>
        <div align="right">
    Hi there, <%= user.getNickname() %> | <a href="<%= authURL %>">Log
out</a>
  </div>

  <form action="" method="POST" enctype="multipart/form-data">
    Report Type: <select name="share">
      <option value="private">SDE</option>
          <option value="public">SWE</option>
        </select><br/>
    Last 10 Logs:<br>
    <table border="1">
                <tr>
                        <td>Date</td>
                        <td>System</td>
                        <td>Message</td>
                </tr>
            <%
                 List<Log> logs =
                   (List<Log>) request.getAttribute("logs");
                 if (logs.size() > 0) {
                   for (int i = 0; i < logs.size(); i++) {
                     Log log = logs.get(i);
              %>
                    <tr>
                        <td><%=log.getDate()%></td>
                        <td><%=log.getSystem()%></td>
                        <td><%=log.getMessage()%></td>
                    </tr>
              <%
                   }
                 }
              %>
      </table>
  </form>

  <hr>
  <a href="/">Back</a>
</body>
</html>

My servlet:

package net.qsens.healthwindow.webmonitor.servlet;

import java.io.IOException;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.qsens.healthwindow.webmonitor.datastore.PMF;
import net.qsens.healthwindow.webmonitor.object.Log;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

@SuppressWarnings("serial")
public class ReportServlet extends HttpServlet {
        public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws
        IOException, ServletException {
                UserService userService = UserServiceFactory.getUserService();
            User user = userService.getCurrentUser();

            String authURL = (user != null) ?
userService.createLogoutURL("/")
              : userService.createLoginURL("/");

            PersistenceManager pm = PMF.get().getPersistenceManager();

            Query query = pm.newQuery(Log.class);
            query.declareImports("import
com.google.appengine.api.users.User");
            query.declareParameters("User userParam");

            List<Log> results = (List<Log>) query.execute(user);

            String[] errors = req.getParameterValues("error");
            if (errors == null) errors = new String[0];

            req.setAttribute("errors", errors);
            req.setAttribute("logs", results);
            req.setAttribute("authURL", authURL);
            req.setAttribute("user", user);
            RequestDispatcher dispatcher =
              req.getRequestDispatcher("WEB-INF/pages/Report.jsp");
            dispatcher.forward(req, resp);
        }
}

I already stepped through the code and it finds the data in the
servlet corretly.

Please can someone help me?

Regards
Matthew Kelly


-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to