Also, do you have any unit tests that touch the App Engine datastore, and if
so, can you run these to see if they work?

- Jason

On Mon, Sep 14, 2009 at 3:41 PM, Jason (Google) <apija...@google.com> wrote:

> Your code looks fine. I just copied it over to a non-Spring context and it
> worked without a hitch. Did you see this error before upgrading your SDK?
> Are you seeing it in both the local development server and production? If
> you start a new project and copy over your domain and DAO classes, does it
> work?
>
> - Jason
>
>
> On Fri, Sep 11, 2009 at 2:04 PM, cancunmods <archie.she...@gmail.com>wrote:
>
>>
>> Hi, I am using spring in my application and the pmf is a singleton, I
>> put it in the class just to make sure it is not a spring issue. I am
>> still getting the error but in my case nothing is persisted. I also
>> added the @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>> line and no dice my SDK version is the newest 1.2.5. The following is
>> the spring code from which I am calling the saveUser method I had
>> posted before. Any help would be greatly appreciaed, thanks.
>>
>> package subasta.web.users;
>>
>> import org.springframework.beans.propertyeditors.StringTrimmerEditor;
>> import org.springframework.web.bind.ServletRequestDataBinder;
>> import org.springframework.web.servlet.mvc.SimpleFormController;
>> import org.springframework.web.servlet.ModelAndView;
>> import org.springframework.web.servlet.view.RedirectView;
>> import org.springframework.beans.factory.annotation.Autowired;
>>
>> import subasta.domain.users.User;
>>
>> import javax.servlet.ServletException;
>> import javax.servlet.http.HttpServletRequest;
>>
>> import java.util.logging.Logger;
>>
>> import subasta.service.users.GuardaUsuario;
>> import subasta.repository.users.UserDAO;
>>
>> public class RegisterController extends SimpleFormController {
>>         /** Logger for this class and subclasses */
>>        private static final Logger log = Logger.getLogger
>> (RegisterController.class
>>                        .getName());
>>
>>        private UserDAO userDao;
>>
>>        public void setUserDao(UserDAO userDao) {
>>                this.userDao = userDao;
>>        }
>>
>>        @Override
>>        public ModelAndView onSubmit(Object command) throws
>> ServletException
>> {
>>
>>                String nombre = ((GuardaUsuario) command).getNombre();
>>                log.info("Guardando usuario " + nombre + ".");
>>
>>                User user = new User(nombre);
>>                userDao.saveUser(user);
>>
>>
>>                log.info("returning from RegisterController view to "
>>                                + getSuccessView());
>>
>>
>>
>>                return new ModelAndView(new
>> RedirectView(getSuccessView()));
>>        }
>>
>>
>>
>>        /*
>>         * This was added because after uploading to GAE I was getting an
>> exception, it is
>>         * actually a pretty neat addition, taken from its javadoc:
>>         * Property editor that trims Strings. Optionally allows
>> transforming
>> an empty string into a null value. Needs to be explictly registered,
>> e.g. for command binding.
>>         * @see
>> org.springframework.web.servlet.mvc.BaseCommandController#initBinder
>> (javax.servlet.http.HttpServletRequest,
>> org.springframework.web.bind.ServletRequestDataBinder)
>>         */
>>        @Override
>>        protected void initBinder(HttpServletRequest request,
>>                        ServletRequestDataBinder binder) throws Exception {
>>                binder.registerCustomEditor(String.class,
>>                                new StringTrimmerEditor(false));
>>         }
>> }
>>
>>
>> On Sep 11, 3:31 pm, Jeff <j...@jgyoung.com> wrote:
>> > I've been seeing the same thing, and also only on the first access
>> > after application start.  It happens consistently for me with my first
>> > call to either getObjectById makePersistent or makePersistentAll.  In
>> > my attempts to search the web for info, I ran across a snippet of code
>> > that included the specified error message text.  A comment in that
>> > source said something like "this is a harmless exception, we should
>> > figure out a way to suppress it."  Yeah, I was annoyed at having spent
>> > a bunch of time thinking this was the source of an issue when it was
>> > only a red herring.  Sorry I don't remember the url to that code
>> > snippet but searching for pieces of the error message from the
>> > beginning of your stack trace should eventually find it.
>> >
>> > I'm currently choosing to ignore the exception and everything appears
>> > to be working for me.
>> >
>> > On Sep 11, 12:01 pm, "Jason (Google)" <apija...@google.com> wrote:
>> >
>> >
>> >
>> > > You shouldn't need the @Persistent(valueStrategy =
>> > > IdGeneratorStrategy.IDENTITY) line since you're using a key name and
>> not a
>> > > String-encoded ID.
>> >
>> > > The only thing that looks suspicious is your pmf object. The best
>> practice
>> > > is to use a PersistenceManagerFactory singleton as documented
>> athttp://code.google.com/appengine/docs/java/datastore/usingjdo.html#Ge..
>> .,
>> > > but I would expect to see exceptions with subsequent calls to
>> saveUser, not
>> > > the first call. All the same, I recommend you try this to see if it
>> helps,
>> > > and please also let me know which version of the SDK you're using.
>> >
>> > > - Jason
>> >
>> > > On Thu, Sep 10, 2009 at 1:09 AM, bysse <erik.byst...@gmail.com>
>> wrote:
>> >
>> > > > As expected, this has nothing to do with wicket or sessions, just to
>> > > > be sure i've checked those. If fact, all entities get persisted as
>> > > > they should and the exception is caught somewhere in makePersistent.
>> > > > So as far as i know, no harm is done(?)
>> > > > So i think i'll just ignore this stacktrace and continue as usual.
>> >
>> > > > On Sep 10, 12:22 am, bysse <erik.byst...@gmail.com> wrote:
>> > > > > I also get this exception, but only on the first call to
>> > > > > makePersistent.
>> >
>> > > > > First Call:
>> > > > >   Exception
>> > > > >   Store objects ?
>> > > > > Later Calls
>> > > > >   Ok
>> > > > >   Stores objects
>> >
>> > > > > Can't think of anything that causes this. I'm using Wicket, how
>> about
>> > > > > you?
>> >
>> > > > > /Erik
>> >
>> > > > > On Sep 8, 7:48 pm, cancunmods <archie.she...@gmail.com> wrote:
>> >
>> > > > > > I am having trouble saving an object on google app engine. Here
>> is my
>> > > > > > POJO class:
>> >
>> > > > > > package subasta.domain.users;
>> >
>> > > > > > import javax.jdo.annotations.IdentityType;
>> > > > > > import javax.jdo.annotations.PersistenceCapable;
>> > > > > > import javax.jdo.annotations.PrimaryKey;
>> > > > > > import javax.jdo.annotations.Persistent;
>> >
>> > > > > > @PersistenceCapable(identityType = IdentityType.APPLICATION)
>> > > > > > public class User {
>> > > > > >     @PrimaryKey
>> > > > > >     @Persistent
>> > > > > >     private String nombre;
>> >
>> > > > > >     public User(String nombre){
>> > > > > >         this.nombre = nombre;
>> > > > > >     }
>> >
>> > > > > >     public String getNombre() {
>> > > > > >         return nombre;
>> > > > > >     }
>> >
>> > > > > >     public void setNombre(String nombre) {
>> > > > > >         this.nombre = nombre;
>> > > > > >     }
>> >
>> > > > > > }
>> >
>> > > > > > Here is my JDO Code.:
>> >
>> > > > > > package subasta.repository.users;
>> >
>> > > > > > import java.util.Set;
>> > > > > > import java.util.logging.Logger;
>> >
>> > > > > > import javax.jdo.JDOHelper;
>> > > > > > import javax.jdo.PersistenceManagerFactory;
>> > > > > > import javax.jdo.PersistenceManager;
>> >
>> > > > > > import subasta.domain.users.User;
>> >
>> > > > > > public class JDOUserDAO implements UserDAO{
>> > > > > >     /** Logger for this class and subclasses */
>> > > > > >     private static final Logger log =
>> Logger.getLogger(UserDAO.class
>> > > > > >             .getName());
>> >
>> > > > > >     private static final PersistenceManagerFactory pmf =
>> > > > > >         JDOHelper.getPersistenceManagerFactory("transactions-
>> > > > > > optional");
>> >
>> > > > > >     //PersistenceManagerFactory pmf;
>> >
>> > > > > >     //public void setPmf(PersistenceManagerFactory pmf) {
>> > > > > >         //this.pmf = pmf;
>> > > > > >     //}
>> >
>> > > > > >     public void saveUser(User user){
>> > > > > >         PersistenceManager pm = pmf.getPersistenceManager();
>> > > > > >         try{
>> > > > > >             pm.makePersistent(user);
>> > > > > >         }finally {
>> > > > > >             pm.close();
>> > > > > >         }
>> > > > > >     }
>> >
>> > > > > >     @SuppressWarnings("unchecked")
>> > > > > >     public Set<User> getUsers(){
>> > > > > >         PersistenceManager pm = pmf.getPersistenceManager();
>> > > > > >         Set<User> users = (Set<User>)pm.getManagedObjects
>> > > > > > (User.class);
>> > > > > >         pm.close();
>> > > > > >         return users;
>> > > > > >     }
>> >
>> > > > > > }
>> >
>> > > > > > Things go wrong when making the call tomakePersistent. The
>> exception
>> > > > > > is:
>> >
>> > > > > > 08-sep-2009 16:51:35
>> >
>> > > >
>> com.google.appengine.repackaged.com.google.common.base.FinalizableReference
>> ­Queue
>> > > > > > <init>
>> > > > > > 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.repackaged.com.google.common.base.FinalizableReference
>> ­Queue.<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.<cli
>> ­nit>
>> > > > > > (ProtocolSupport.java:55)
>> > > > > >     at com.google.apphosting.api.DatastorePb$PutRequest.freeze
>> > > > > > (DatastorePb.java:8452)
>> > > > > >     at com.google.apphosting.api.DatastorePb$PutRequest$1.<init>
>> > > > > > (DatastorePb.java:8367)
>> > > > > >     at com.google.apphosting.api.DatastorePb$PutRequest.<clinit>
>> > > > > > (DatastorePb.java:8364)
>> > > > > >     at
>> com.google.appengine.api.datastore.DatastoreServiceImpl.put
>> > > > > > (DatastoreServiceImpl.java:152)
>> > > > > >     at
>> com.google.appengine.api.datastore.DatastoreServiceImpl.put
>> > > > > > (DatastoreServiceImpl.java:138)
>> > > > > >     at
>> com.google.appengine.api.datastore.DatastoreServiceImpl.put
>> > > > > > (DatastoreServiceImpl.java:130)
>> > > > > >     at
>> >
>> > > >
>> org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.pu
>> ­t
>> > > > > > (RuntimeExceptionWrappingDatastoreService.java:93)
>> > > > > >     at
>> org.datanucleus.store.appengine.DatastorePersistenceHandler.put
>> > > > > > (DatastorePersistenceHandler.java:165)
>> > > > > >     at
>> org.datanucleus.store.appengine.DatastorePersistenceHandler.put
>> > > > > > (DatastorePersistenceHandler.java:112)
>> > > > > >     at
>> >
>> > > >
>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects
>> > > > > > (DatastorePersistenceHandler.java:239)
>> > > > > >     at
>> >
>> > > >
>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject
>> > > > > > (DatastorePersistenceHandler.java:225)
>> > > > > >     at
>> org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent
>> > > > > > (JDOStateManagerImpl.java:3185)
>> > > > > >     at org.datanucleus.state.JDOStateManagerImpl.makePersistent
>> > > > > > (JDOStateManagerImpl.java:3161)
>> > > > > >     at org.datanucleus.ObjectManagerImpl.persistObjectInternal
>> > > > > > (ObjectManagerImpl.java:1298)
>> > > > > >     at org.datanucleus.ObjectManagerImpl.persistObject
>> > > > > > (ObjectManagerImpl.java:1175)
>> > > > > >     at
>> org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
>> > > > > > (JDOPersistenceManager.java:669)
>> > > > > >     at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
>> > > > > > (JDOPersistenceManager.java:694)
>> > > > > >     at
>> subasta.repository.users.JDOUserDAO.saveUser(JDOUserDAO.java:
>> > > > > > 29)
>> > > > > >     at subasta.web.users.RegisterController.onSubmit
>> > > > > > (RegisterController.java:38)
>> > > > > >     at
>> > > > > >
>> org.springframework.web.servlet.mvc.SimpleFormController.onSubmit
>> > > > > > (SimpleFormController.java:409)
>> > > > > >     at
>> > > > > >
>> org.springframework.web.servlet.mvc.SimpleFormController.onSubmit
>> > > > > > (SimpleFormController.java:381)
>> > > > > >     at
>> >
>> > > >
>> org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmiss
>> ­ion
>> > > > > > (SimpleFormController.java:267)
>> > > > > >     at
>> >
>> > > >
>> org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInt
>> ­ernal
>> > > > > > (AbstractFormController.java:265)
>> > > > > >     at
>> > > > > >
>> org.springframework.web.servlet.mvc.AbstractController.handleRequest
>> > > > > > (AbstractController.java:153)
>> > > > > >     at
>> >
>> > > >
>> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
>> > > > > > (SimpleControllerHandlerAdapter.java:48)
>> > > > > >     at
>> org.springframework.web.servlet.DispatcherServlet.doDispatch
>> > > > > > (DispatcherServlet.java:875)
>> > > > > >     at
>> org.springframework.web.servlet.DispatcherServlet.doService
>> > > > > > (DispatcherServlet.java:807)
>> > > > > >     at
>> org.springframework.web.servlet.FrameworkServlet.processRequest
>> > > > > > (FrameworkServlet.java:571)
>> > > > > >     at org.springframework.web.servlet.FrameworkServlet.doPost
>> > > > > > (FrameworkServlet.java:511)
>> > > > > >     at
>> >
>> > ...
>> >
>> > read more »
>> >>
>>
>

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

Reply via email to