Hi all, I am returning the results from a poll with a simple results servlet that queries the database two times. For some reason, the results servlet is causing drastic CPU usage and I can't figure out why. Can someone look in here and see if there is something extremely obvious that is causing CPU usage to go overboard?
I attached the java file... -- 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 google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
package net.creativelift.snappypoll; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.logging.Logger; import javax.jdo.PersistenceManager; import javax.jdo.Query; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResultsServlet extends HttpServlet { private static final Logger log = Logger.getLogger(VoteServlet.class.getName()); private PersistenceManager pm; private String poll_id; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { poll_id = req.getParameter("poll_id"); pm = PMF.get().getPersistenceManager(); List<Vote> votes = getVotes(); resp.setContentType("text/xml"); PrintWriter out = resp.getWriter(); try { Poll poll = getPoll(); int[] countArray = groupedVotes(votes,poll.getAnswers().length); out.println("<?xml version=\"1.0\"?>"); out.println("<Poll>"); out.println("<question>" + poll.getQuestion() + "</question>"); out.println("<answers>"); int index = 0; for (String answer : poll.getAnswers()) { out.println("<answer>"); out.println("<copy>"); out.println(answer); out.println("</copy>"); out.println("<votes>" + countArray[index] + "</votes>"); out.println("</answer>"); index += 1; } out.println("</answers>"); out.println("</Poll>"); } catch(IndexOutOfBoundsException e) { out.println("<?xml version=\"1.0\"?>"); out.println("<Poll />"); } pm.close(); } private Poll getPoll() throws IndexOutOfBoundsException { Query query = pm.newQuery(Poll.class); query.setFilter("poll_id == pollID"); query.declareParameters("String pollID"); List<Poll> polls = (List<Poll>) pm.newQuery(query).execute(poll_id); Poll poll = polls.get(0); return poll; } private List<Vote> getVotes() { Query query = pm.newQuery(Vote.class); query.setFilter("poll_id == pollID"); query.declareParameters("String pollID"); List<Vote> votes = (List<Vote>) pm.newQuery(query).execute(poll_id); return votes; } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { /*String poll_id = req.getPathInfo().substring(1,req.getPathInfo().length()); RequestDispatcher newView = req.getRequestDispatcher( "/results.jsp?poll_id=" + poll_id ); try { newView.include( req, resp ); } catch(ServletException e) { System.out.println("oops"); }*/ resp.setContentType("text/xml"); PrintWriter out = resp.getWriter(); out.println("<?xml version=\"1.0\"?>"); out.println("<Poll />"); } private int[] groupedVotes(List<Vote> votes,Integer answersAmount) { int[] countArray = new int[answersAmount]; for(Vote vote : votes) { countArray[vote.getAnswer()] += 1; } return countArray; } }