I believe this exception is normal and not a problem.  It is logged at the
INFO level for this reason.  Just ignore it.

2009/10/30 Julio Faerman <[email protected]>

>
> I could not see anything in the logs because the default logging for
> datanucleus is raised.
> Now i have a exception to handle... (below) tnks
> Can i use a ThreadLocal to keep the PM for the whole request and close
> it in the end, or are there any threading concerns i must be aware of?
>
> INFO: Failed to start reference finalizer thread. Reference cleanup
> will only occur when new references are created.
> java.lang.reflect.InvocationTargetException
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> com.google.appengine.tools.development.agent.runtime.Runtime.invoke
> (Runtime.java:100)
>        at
>
> com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue.<init>
> (FinalizableReferenceQueue.java:124)
>        at
> com.google.appengine.repackaged.com.google.common.labs.misc.InterningPools
> $WeakInterningPool.<clinit>(InterningPools.java:104)
>        at
>
> com.google.appengine.repackaged.com.google.common.labs.misc.InterningPools.newWeakInterningPool
> (InterningPools.java:48)
>        at
>
> com.google.appengine.repackaged.com.google.io.protocol.ProtocolSupport.<clinit>
> (ProtocolSupport.java:55)
>        at com.google.apphosting.api.DatastorePb$Query.<init>
> (DatastorePb.java:1072)
>        at com.google.apphosting.api.DatastorePb$Query$1.<init>
> (DatastorePb.java:2355)
>        at com.google.apphosting.api.DatastorePb$Query.<clinit>
> (DatastorePb.java:2355)
>        at com.google.appengine.api.datastore.QueryTranslator.convertToPb
> (QueryTranslator.java:28)
>        at com.google.appengine.api.datastore.DatastoreServiceImpl
> $PreparedQueryImpl.convertToPb(DatastoreServiceImpl.java:382)
>        at com.google.appengine.api.datastore.DatastoreServiceImpl
> $PreparedQueryImpl.runQuery(DatastoreServiceImpl.java:342)
>        at com.google.appengine.api.datastore.DatastoreServiceImpl
> $PreparedQueryImpl.access$100(DatastoreServiceImpl.java:272)
>        at com.google.appengine.api.datastore.DatastoreServiceImpl
> $PreparedQueryImpl$1.iterator(DatastoreServiceImpl.java:306)
>        at
>
> org.datanucleus.store.appengine.query.RuntimeExceptionWrappingIterable.iterator
> (RuntimeExceptionWrappingIterable.java:42)
>        at org.datanucleus.store.appengine.query.StreamingQueryResult.<init>
> (StreamingQueryResult.java:77)
>        at
>
> org.datanucleus.store.appengine.query.DatastoreQuery.newStreamingQueryResultForEntities
> (DatastoreQuery.java:324)
>        at
> org.datanucleus.store.appengine.query.DatastoreQuery.fulfillEntityQuery
> (DatastoreQuery.java:310)
>        at
> org.datanucleus.store.appengine.query.DatastoreQuery.performExecute
> (DatastoreQuery.java:242)
>        at org.datanucleus.store.appengine.query.JDOQLQuery.performExecute
> (JDOQLQuery.java:84)
>        at org.datanucleus.store.query.Query.executeQuery(Query.java:1489)
>        at org.datanucleus.store.query.Query.executeWithArray(Query.java:
> 1371)
>        at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:243)
>        at br.com.ximp.vike.server.DM.findGame(DM.java:120)
>        at br.com.ximp.vike.server.DM.process(DM.java:42)
>        at br.com.ximp.vike.server.MailHandler.process(MailHandler.java:101)
>        at br.com.ximp.vike.server.MailHandler.doPost(MailHandler.java:70)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
>        at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> 487)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> (ServletHandler.java:1093)
>        at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
> (TransactionCleanupFilter.java:43)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> (ServletHandler.java:1084)
>        at com.google.appengine.tools.development.StaticFileFilter.doFilter
> (StaticFileFilter.java:121)
>        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> (ServletHandler.java:1084)
>        at org.mortbay.jetty.servlet.ServletHandler.handle
> (ServletHandler.java:360)
>        at org.mortbay.jetty.security.SecurityHandler.handle
> (SecurityHandler.java:216)
>        at org.mortbay.jetty.servlet.SessionHandler.handle
> (SessionHandler.java:181)
>        at org.mortbay.jetty.handler.ContextHandler.handle
> (ContextHandler.java:712)
>        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> 405)
>        at
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
> (DevAppEngineWebAppContext.java:54)
>        at org.mortbay.jetty.handler.HandlerWrapper.handle
> (HandlerWrapper.java:139)
>        at com.google.appengine.tools.development.JettyContainerService
> $ApiProxyHandler.handle(JettyContainerService.java:342)
>        at org.mortbay.jetty.handler.HandlerWrapper.handle
> (HandlerWrapper.java:139)
>        at org.mortbay.jetty.Server.handle(Server.java:313)
>        at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> 506)
>        at org.mortbay.jetty.HttpConnection$RequestHandler.content
> (HttpConnection.java:844)
>        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
>        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
>        at org.mortbay.io.nio.SelectChannelEndPoint.run
> (SelectChannelEndPoint.java:396)
>        at org.mortbay.thread.BoundedThreadPool$PoolThread.run
> (BoundedThreadPool.java:442)
> Caused by: java.security.AccessControlException: access denied
> (java.lang.RuntimePermission modifyThreadGroup)
>        at java.security.AccessControlContext.checkPermission
> (AccessControlContext.java:323)
>        at java.security.AccessController.checkPermission
> (AccessController.java:546)
>        at java.lang.SecurityManager.checkPermission(SecurityManager.java:
> 532)
>        at com.google.appengine.tools.development.DevAppServerFactory
> $CustomSecurityManager.checkPermission(DevAppServerFactory.java:151)
>        at com.google.appengine.tools.development.DevAppServerFactory
> $CustomSecurityManager.checkAccess(DevAppServerFactory.java:176)
>        at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:288)
>        at java.lang.Thread.init(Thread.java:332)
>        at java.lang.Thread.<init>(Thread.java:429)
>        at
>
> com.google.appengine.repackaged.com.google.common.base.internal.Finalizer.<init>
> (Finalizer.java:96)
>        at
>
> com.google.appengine.repackaged.com.google.common.base.internal.Finalizer.startFinalizer
> (Finalizer.java:82)
>        ... 55 more
>
> On Oct 30, 11:08 am, datanucleus <[email protected]> wrote:
> > > it either saves or silently does nothing. I would like to know if there
> are any patterns for:
> >
> > Define "does nothing". The log tells what it does. Why not post it
> > here for the operation in question ...
> >
> > > 1) Creating / closing the PersistenceManager: Should i reuse the
> > > PersistenceManager for the whole request? Can i use ThreadLocal to
> > > make it available for the request?
> >
> > A typical pattern for a web-tier is PM per request. Creation of PM is
> > not expensive either FWIW
> >
> > > 2) What influences the JDO? Can i use as many nested objects, methods
> > > (instance and static), try catches, as my design wishes?
> >
> > JDO imposes very little on your code (doesnt persist static/final
> > fields but thats all), aka transparent persistence
> >
> > > 3) Is JDO "usable" at all? Or should i go low-level ?
> >
> > JDO is obviously usable since there are articles by people using it,
> > and articles by Google on their blog about how to handle particular
> > features. Depending on what you're doing governs which API you use.
> >
>

--~--~---------~--~----~------------~-------~--~----~
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