I use JPA in my servlet in my app, but some times when I query data
google app engine will report some exception(following is my log from
app engine's admin log. ResultServlet is my servlet), the exception is
about:
"com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue
<init>
INFO: Failed to start reference finalizer thread. Reference cleanup
will only occur when new references are created."
this exception was discussed in this group and i found no one gave the
solution, every one said it
is not affect the performance of application. but from my log i found
it affected my performance.
11-28 08:37AM 44.050 survey.ResultServlet doGet: begin query data
I 11-28 08:37AM 44.703
com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue
$SystemLoader loadFinalizer: Not allowed to access system class loader
I 11-28 08:37AM 44.718
com.google.appengine.repackaged.com.google.common.base.internal.Finalizer
getInheritableThreadLocalsField: Couldn't access
Thread.inheritableThreadLoc
I 11-28 08:37AM 44.721
com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue
<init>: Failed to start reference finalizer thread. Reference
cleanup...
I 11-28 08:37AM 45.242 survey.ResultServlet doGet: query data used
time :1188
I 11-28 08:37AM 45.617 survey.ResultServlet doGet: render page used
time : 375
some times this exception will disappear, every thing go well, here is
the log:
11-28 08:30AM 33.170 survey.ResultServlet doGet: begin query data
I 11-28 08:30AM 33.206 survey.ResultServlet doGet: query data used
time :36
I 11-28 08:30AM 33.212 survey.ResultServlet doGet: render page used
time : 6
if the exception occurs, my page will be rendered to client very slowly
(it will costs >3s), but without the exception page render is less
than 1s. And I found this exception occurs after some minute when my
application has no incoming request from client. because my
application is not in very high concurrency environment, so the
problem occurs in 50% time.
my code is like this:
public class ResultServlet extends HttpServlet {
private static final Logger log = Logger.getLogger
(ResultServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
List<Reply> list = null;
EntityManager em = EMF.get().createEntityManager();
log.info("begin query data");
long start = System.currentTimeMillis();
try {
list = em.createQuery("select r from Reply as
r").getResultList();
log.info("query data used time :" + String.valueOf
(System.currentTimeMillis() - start));
start = System.currentTimeMillis();
....code to deal list data.
req.getRequestDispatcher("result.jsp").forward(req,
resp);
log.info("render page used time : " + String.valueOf
(System.currentTimeMillis() - start));
} finally {
em.close();
}
}
}
any one can help me?
--
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.