google app engine - Appengine Java: NotSerializableException -
i developed application in gae java, i'm getting error only on deployed version, i'm unable ricreate condition on local environment.
when call servlet i've made, process ends w/o error (i logged lot procedure in order fix problem). servlet prints response output , code finished.
but after procedure i'm getting following error, real response received client classic error 500 page.
java.lang.runtimeexception: java.io.notserializableexception: java.util.logging.logger @ com.google.apphosting.runtime.sessionmanagerutil.serialize(sessionmanagerutil.java:31) @ com.google.apphosting.runtime.jetty.datastoresessionstore.createentityforsession(datastoresessionstore.java:72) @ com.google.apphosting.runtime.jetty.datastoresessionstore.savesession(datastoresessionstore.java:94) @ com.google.apphosting.runtime.jetty.sessionmanager$appenginesession.save(sessionmanager.java:156) @ com.google.apphosting.runtime.jetty.savesessionfilter.dofilter(savesessionfilter.java:41) @ org.mortbay.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1157) @ com.google.apphosting.utils.servlet.jdbcmysqlconnectioncleanupfilter.dofilter(jdbcmysqlconnectioncleanupfilter.java:57) @ org.mortbay.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1157) @ com.google.apphosting.utils.servlet.transactioncleanupfilter.dofilter(transactioncleanupfilter.java:43) @ org.mortbay.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1157) @ org.mortbay.jetty.servlet.servlethandler.handle(servlethandler.java:388) @ org.mortbay.jetty.security.securityhandler.handle(securityhandler.java:216) @ org.mortbay.jetty.servlet.sessionhandler.handle(sessionhandler.java:182) @ org.mortbay.jetty.handler.contexthandler.handle(contexthandler.java:765) @ org.mortbay.jetty.webapp.webappcontext.handle(webappcontext.java:418) @ com.google.apphosting.runtime.jetty.appversionhandlermap.handle(appversionhandlermap.java:266) @ org.mortbay.jetty.handler.handlerwrapper.handle(handlerwrapper.java:152) @ org.mortbay.jetty.server.handle(server.java:326) @ org.mortbay.jetty.httpconnection.handlerequest(httpconnection.java:542) @ org.mortbay.jetty.httpconnection$requesthandler.headercomplete(httpconnection.java:923) @ com.google.apphosting.runtime.jetty.rpcrequestparser.parseavailable(rpcrequestparser.java:76) @ org.mortbay.jetty.httpconnection.handle(httpconnection.java:404) @ com.google.apphosting.runtime.jetty.jettyservletengineadapter.servicerequest(jettyservletengineadapter.java:146) @ com.google.apphosting.runtime.javaruntime$requestrunnable.run(javaruntime.java:439) @ com.google.tracing.tracecontext$tracecontextrunnable.runincontext(tracecontext.java:480) @ com.google.tracing.tracecontext$tracecontextrunnable$1.run(tracecontext.java:487) @ com.google.tracing.tracecontext.runincontext(tracecontext.java:774) @ com.google.tracing.tracecontext$dointracecontext.runincontext(tracecontext.java:751) @ com.google.tracing.tracecontext$abstracttracecontextcallback.runininheritedcontextnounref(tracecontext.java:342) @ com.google.tracing.tracecontext$abstracttracecontextcallback.runininheritedcontext(tracecontext.java:334) @ com.google.tracing.tracecontext$tracecontextrunnable.run(tracecontext.java:484) @ com.google.apphosting.runtime.threadgrouppool$poolentry.run(threadgrouppool.java:251) @ java.lang.thread.run(thread.java:679) caused by: java.io.notserializableexception: java.util.logging.logger @ java.io.objectoutputstream.writeobject0(objectoutputstream.java:1197) @ java.io.objectoutputstream.defaultwritefields(objectoutputstream.java:1545) @ java.io.objectoutputstream.writeserialdata(objectoutputstream.java:1510) @ java.io.objectoutputstream.writeordinaryobject(objectoutputstream.java:1433) @ java.io.objectoutputstream.writeobject0(objectoutputstream.java:1191) @ java.io.objectoutputstream.writeobject(objectoutputstream.java:363) @ java.util.hashmap.writeobject(hashmap.java:1018) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:616) @ java.io.objectstreamclass.invokewriteobject(objectstreamclass.java:962) @ java.io.objectoutputstream.writeserialdata(objectoutputstream.java:1497) @ java.io.objectoutputstream.writeordinaryobject(objectoutputstream.java:1433) @ java.io.objectoutputstream.writeobject0(objectoutputstream.java:1191) @ java.io.objectoutputstream.writeobject(objectoutputstream.java:363) @ com.google.apphosting.runtime.sessionmanagerutil.serialize(sessionmanagerutil.java:28) ... 32 more
i read in page commun mistake because logger not serializable, declare loggers in project
final static transient logger = logger.getlogger(myclass.class.getname());
but still no solution.... day i'm trying fix problem (and fact problem on deployed version not helping...)
i need clarify 2 weeks ago deployed version worked perfectly, w/o problems. today, same version, starts work errors explained. i'm wondering if cause might new released version of gae 1.8.0
thanks support regards
solved question using "trick" in every class use log
public logger log() { return logger.getlogger(this.class.getname()); }
and in class, log needed, used
log().info(...); log().severe(...); ....
with procedure, class not store object logger, during serialization not try serialize logger object
Comments
Post a Comment