This is a known limitation in GAE. https://github.com/wicketstuff/core/blob/master/jdk-1.6-parent/gae-initializer-parent/gae-initializer/src/main/java/org/wicketstuff/gae/GaeObjectSerializer.java
And there is a ticket about this in GAE issues tracker since few years now. I cannot find it at the moment. On Mon, Feb 20, 2012 at 4:00 PM, Ian Marshall <ianmarshall...@gmail.com> wrote: > The web application default serialiser > org.apache.wicket.serialize.java.JavaSerializer has been amended in Wicket > 1.5.4. When running an application in Google App Engine for Java (GAE/J), > these changes cause GAE/J to throw the exception > > java.security.AccessControlException: access denied > (java.io.SerializablePermission enableSubclassImplementation) > > during web page serialisation, since GAE/J does not allow the changes made. > > As a work-around, I have developed a class (called "GaeSerialiser") which > implements ISerializer and uses default Java serialisation and > deserialisation behaviour. I set my application's serialiser to an instance > of this class instead of the default. This prevents the above exception > being raised. > > If anyone wants any further details (or code for my new class, although it > is simple) then please let me know. > > Ian Marshall > > > My environment > -------------- > Wicket: 1.5.4 > GAE/J SDK: 1.6.2.1 > Java SDK: 1.6.0_29 > > Stack trace > ----------- > 18-Feb-2012 13:45:08 org.apache.wicket.serialize.java.JavaSerializer > serialize > SEVERE: Error serializing object class [...].PageHome [object=[Page class = > [...].PageHome, id = 0, render count = 1]] > java.security.AccessControlException: access denied > (java.io.SerializablePermission enableSubclassImplementation) > at java.security.AccessControlContext.checkPermission(Unknown > Source) > at java.security.AccessController.checkPermission(Unknown Source) > at java.lang.SecurityManager.checkPermission(Unknown Source) > at > com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:252) > at java.io.ObjectOutputStream.<init>(Unknown Source) > at > org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.<init>(JavaSerializer.java:241) > at > org.apache.wicket.serialize.java.JavaSerializer.newObjectOutputStream(JavaSerializer.java:174) > at > org.apache.wicket.serialize.java.JavaSerializer.serialize(JavaSerializer.java:75) > at > org.apache.wicket.pageStore.DefaultPageStore.serializePage(DefaultPageStore.java:368) > at > org.apache.wicket.pageStore.DefaultPageStore.storePage(DefaultPageStore.java:146) > at > org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.storeTouchedPages(PageStoreManager.java:383) > at > org.apache.wicket.page.RequestAdapter.commitRequest(RequestAdapter.java:171) > at > org.apache.wicket.page.AbstractPageManager.commitRequest(AbstractPageManager.java:94) > at > org.apache.wicket.page.PageManagerDecorator.commitRequest(PageManagerDecorator.java:68) > at > org.apache.wicket.page.PageAccessSynchronizer$2.commitRequest(PageAccessSynchronizer.java:281) > at org.apache.wicket.Application$2.onDetach(Application.java:1598) > at > org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:99) > at > org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:97) > at > org.apache.wicket.util.listener.ListenerCollection$1.notify(ListenerCollection.java:119) > at > org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:143) > at > org.apache.wicket.util.listener.ListenerCollection.reversedNotifyIgnoringExceptions(ListenerCollection.java:113) > at > org.apache.wicket.request.cycle.RequestCycleListenerCollection.onDetach(RequestCycleListenerCollection.java:95) > at > org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:600) > at > org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:539) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:287) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162) > at > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:218) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at > com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:363) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > > 18-Feb-2012 13:45:08 org.apache.wicket.pageStore.DefaultPageStore > serializePage > WARNING: Page [Page class = [...].PageHome, id = 0, render count = 1] cannot > be serialized. See previous logs for possible reasons. > > -- > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/JavaSerializer-in-1-5-4-causes-exceptions-with-GAE-tp4404222p4404222.html > Sent from the Users forum mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org