Martijn Dashorst wrote:
Then we could use a longer trace from the serialization exception... Plus some code to go with it. The best way would be to create a minimal setup using a quickstart exhibiting the problem.
hi here is the attached demo reproducing the issue it was harder than I thought to get it to happen actually it seems like it's linked to 2 elements: - having injection done in a static inner class- having the following code in the injected implementation, where DecoratorFactory doesn't implement Serializable:
public class DecoratorFactoryImpl implements DecoratorFactory
{
public AbstractBehavior getDefaultDecorator()
{
return new DefaultDecorator() ;
}
class DefaultDecorator extends AbstractBehavior
{
@Override
public void bind(final Component component)
{
component.add(new SimpleAttributeModifier("class", "foo"));
}
}
}
to reproduce the issue, just run the Start and on the home page your
console should contain this:
ERROR - Objects - Error serializing object class
org.demo.HomePage [object=[Page class = org.demo.HomePage, id = 0,
version = 0]]
org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
Unable to serialize class: org.demo.DecoratorFactoryImpl
Field hierarchy is: 0 [class=org.demo.HomePage, path=0]private java.lang.Object org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;] private java.lang.Object org.apache.wicket.MarkupContainer.children[0] [class=org.demo.HomePage$TextForm, path=0:form] private java.lang.Object org.apache.wicket.MarkupContainer.children [class=[Ljava.lang.Object;] private org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup.markupHelper[1] [class=org.apache.wicket.markup.html.form.RequiredTextField, path=0:form:text] java.lang.Object org.apache.wicket.Component.data [class=[Ljava.lang.Object;] private java.io.Serializable org.apache.wicket.model.Model.object[1] [class=org.demo.DecoratorFactoryImpl$DefaultDecorator] final org.demo.DecoratorFactoryImpl org.demo.DecoratorFactoryImpl$DefaultDecorator.this$0 [class=org.demo.DecoratorFactoryImpl] <----- field that is not serializable at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:346) at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:392) at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:392) at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:392) at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) at org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:684)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322)at org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:129)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322)at org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1124) at org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageStore.java:203) at org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage(DiskPageStore.java:840) at org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put(SecondLevelCacheSessionStore.java:332)
at org.apache.wicket.Session.requestDetached(Session.java:1400) at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1176) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1454) at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) 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 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:295)at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:503) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:827)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:511) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379)at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Caused by: java.io.NotSerializableException: org.demo.DecoratorFactoryImpl at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
at org.apache.wicket.Component.writeObject(Component.java:4439) 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 java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)at org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:121)
... 26 more thanks again for your help joseph
proxynotser.tar.gz
Description: GNU Zip compressed data
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
