I have a Java App Engine Maven project configured with Objectify 5.1.13
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>5.1.13</version>
</dependency>
with the related filter
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
During the registering of the classes (which is made by a ServletContextListener
during the startup of the development server) I get a stackoverflow error
ObjectifyService.factory().register(classToRegister);
Here is the error shown during the start of the dev-server
lug 13, 2016 10:36:57 AM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
INFORMAZIONI: Overwriting system property key 'java.util.logging.config.file', value 'C:\Users\Nicola\.m2\repository\com\google\appengine\appengine-java-sdk\1.9.38\appengine-java-sdk\appengine-java-sdk-1.9.38\config\sdk\logging.properties' with value 'WEB-INF/logging.properties' from 'C:\Users\Nicola\workspace_neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Autogrill_GPE\WEB-INF\appengine-web.xml'
lug 13, 2016 10:36:58 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
lug 13, 2016 10:37:04 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: jetty-6.1.x
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@747d97da{/,C:\Users\Nicola\workspace_neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Autogrill_GPE}: java.lang.StackOverflowError
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: failed JettyContainerService$ApiProxyHandler@12559336: java.lang.StackOverflowError
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: Error starting handlers
java.lang.StackOverflowError
at java.lang.String.hashCode(String.java:1446)
at java.util.HashMap.hash(HashMap.java:362)
at java.util.HashMap.getEntry(HashMap.java:462)
at java.util.HashMap.get(HashMap.java:417)
at java.util.Collections$SynchronizedMap.get(Collections.java:2037)
at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.getAppEngineInternalAnnotation(RuntimeHelper.java:101)
at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:71)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
at com.googlecode.objectify.impl.AbstractProperty.getAnnotation(AbstractProperty.java:58)
at com.googlecode.objectify.impl.AbstractProperty.<init>(AbstractProperty.java:28)
at com.googlecode.objectify.impl.FieldProperty.<init>(FieldProperty.java:36)
at com.googlecode.objectify.impl.translate.ClassPopulator.getDeclaredProperties(ClassPopulator.java:209)
at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:84)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
.... more stacktrace same as above ....
at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: Started SelectChann...@127.0.0.1:8888
lug 13, 2016 10:37:52 AM com.google.appengine.tools.development.JettyContainerService startHotDeployScanner
INFORMAZIONI: Full scan of the web app in place every 5s.
lug 13, 2016 10:37:54 AM com.google.appengine.tools.development.AbstractModule startup
INFORMAZIONI: Module instance default is running at http://localhost:8888/
lug 13, 2016 10:37:54 AM com.google.appengine.tools.development.AbstractModule startup
INFORMAZIONI: The admin console is running at http://localhost:8888/_ah/admin
lug 13, 2016 10:37:54 AM com.google.appengine.tools.development.DevAppServerImpl doStart
INFORMAZIONI: Dev App Server is now running
Sorry I had to shorten the stacktrace but SO do not accept text over 30k characters
Figured out the problem
I had a Throwable
variabile which seems not be well managed by Objectify.
If it is a not managed type I was excepting an error, an stackoverflow problem suggest a case not expected.
I had to add @Serialize
to make it work, now it is all working.