You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Don Ferguson (JIRA)" <ji...@apache.org> on 2010/01/23 23:11:18 UTC

[jira] Created: (WICKET-2697) org.apache.wicket.util.listener.ChangeListenerSet should be serializable

org.apache.wicket.util.listener.ChangeListenerSet should be serializable
------------------------------------------------------------------------

                 Key: WICKET-2697
                 URL: https://issues.apache.org/jira/browse/WICKET-2697
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.4.5
         Environment: jetty/mac
            Reporter: Don Ferguson


I have an instance of org.apache.wicket.util.listener.ChangeListenerSet in my session.  During session serialization, I get exceptions like: 

2010-01-23 14:08:09.227::WARN:  Problem restoring session bf7hquqgf9ui
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.wicket.util.listener.ChangeListenerSet
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1309)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at org.mortbay.jetty.servlet.HashSessionManager.restoreSession(HashSessionManager.java:494)
        at org.mortbay.jetty.servlet.HashSessionManager.restoreSessions(HashSessionManager.java:400)
        at org.mortbay.jetty.servlet.HashSessionManager.doStart(HashSessionManager.java:81)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.servlet.SessionHandler.doStart(SessionHandler.java:116)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
        at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:537)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.deployer.ContextDeployer.deploy(ContextDeployer.java:268)
        at org.mortbay.jetty.deployer.ContextDeployer.redeploy(ContextDeployer.java:287)
        at org.mortbay.jetty.deployer.ContextDeployer.access$100(ContextDeployer.java:67)
        at org.mortbay.jetty.deployer.ContextDeployer$ScannerListener.fileChanged(ContextDeployer.java:99)
        at org.mortbay.util.Scanner.reportChange(Scanner.java:464)
        at org.mortbay.util.Scanner.reportDifferences(Scanner.java:330)
        at org.mortbay.util.Scanner.scan(Scanner.java:280)
        at org.mortbay.util.Scanner$1.run(Scanner.java:232)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (WICKET-2697) org.apache.wicket.util.listener.ChangeListenerSet should be serializable

Posted by "Igor Vaynberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-2697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg resolved WICKET-2697.
-----------------------------------

    Resolution: Won't Fix
      Assignee: Igor Vaynberg

those classes are not meant to be serializable or for you to hold them in session.

even if we did make the listenerset serializable you would still have to make sure that every listener inside is also, this would cascade down to everything else.

> org.apache.wicket.util.listener.ChangeListenerSet should be serializable
> ------------------------------------------------------------------------
>
>                 Key: WICKET-2697
>                 URL: https://issues.apache.org/jira/browse/WICKET-2697
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4.5
>         Environment: jetty/mac
>            Reporter: Don Ferguson
>            Assignee: Igor Vaynberg
>
> I have an instance of org.apache.wicket.util.listener.ChangeListenerSet in my session.  During session serialization, I get exceptions like: 
> 2010-01-23 14:08:09.227::WARN:  Problem restoring session bf7hquqgf9ui
> java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.wicket.util.listener.ChangeListenerSet
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1309)
>         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910)
>         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834)
>         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>         at org.mortbay.jetty.servlet.HashSessionManager.restoreSession(HashSessionManager.java:494)
>         at org.mortbay.jetty.servlet.HashSessionManager.restoreSessions(HashSessionManager.java:400)
>         at org.mortbay.jetty.servlet.HashSessionManager.doStart(HashSessionManager.java:81)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>         at org.mortbay.jetty.servlet.SessionHandler.doStart(SessionHandler.java:116)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>         at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>         at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:537)
>         at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>         at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
>         at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
>         at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>         at org.mortbay.jetty.deployer.ContextDeployer.deploy(ContextDeployer.java:268)
>         at org.mortbay.jetty.deployer.ContextDeployer.redeploy(ContextDeployer.java:287)
>         at org.mortbay.jetty.deployer.ContextDeployer.access$100(ContextDeployer.java:67)
>         at org.mortbay.jetty.deployer.ContextDeployer$ScannerListener.fileChanged(ContextDeployer.java:99)
>         at org.mortbay.util.Scanner.reportChange(Scanner.java:464)
>         at org.mortbay.util.Scanner.reportDifferences(Scanner.java:330)
>         at org.mortbay.util.Scanner.scan(Scanner.java:280)
>         at org.mortbay.util.Scanner$1.run(Scanner.java:232)
>         at java.util.TimerThread.mainLoop(Timer.java:512)
>         at java.util.TimerThread.run(Timer.java:462)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (WICKET-2697) org.apache.wicket.util.listener.ChangeListenerSet should be serializable

Posted by "Don Ferguson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-2697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12804182#action_12804182 ] 

Don Ferguson commented on WICKET-2697:
--------------------------------------

FWIW, this problem didn't become apparent until I turned on Jetty's HashSessionManager to persist sessions to disk.  I'm now wondering if this had been silently failing in production, and causing users to prematurely lose their sessions.  Anyway, I changed the code to use an ArrayList, and the serialization problem is fixed.

If this isn't meant to be stored in a session (or, by extension, as a member variable on a stateful page or component), it should probably be documented as such.


> org.apache.wicket.util.listener.ChangeListenerSet should be serializable
> ------------------------------------------------------------------------
>
>                 Key: WICKET-2697
>                 URL: https://issues.apache.org/jira/browse/WICKET-2697
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4.5
>         Environment: jetty/mac
>            Reporter: Don Ferguson
>            Assignee: Igor Vaynberg
>
> I have an instance of org.apache.wicket.util.listener.ChangeListenerSet in my session.  During session serialization, I get exceptions like: 
> 2010-01-23 14:08:09.227::WARN:  Problem restoring session bf7hquqgf9ui
> java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.wicket.util.listener.ChangeListenerSet
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1309)
>         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910)
>         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834)
>         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>         at org.mortbay.jetty.servlet.HashSessionManager.restoreSession(HashSessionManager.java:494)
>         at org.mortbay.jetty.servlet.HashSessionManager.restoreSessions(HashSessionManager.java:400)
>         at org.mortbay.jetty.servlet.HashSessionManager.doStart(HashSessionManager.java:81)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>         at org.mortbay.jetty.servlet.SessionHandler.doStart(SessionHandler.java:116)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>         at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>         at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:537)
>         at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>         at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
>         at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
>         at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>         at org.mortbay.jetty.deployer.ContextDeployer.deploy(ContextDeployer.java:268)
>         at org.mortbay.jetty.deployer.ContextDeployer.redeploy(ContextDeployer.java:287)
>         at org.mortbay.jetty.deployer.ContextDeployer.access$100(ContextDeployer.java:67)
>         at org.mortbay.jetty.deployer.ContextDeployer$ScannerListener.fileChanged(ContextDeployer.java:99)
>         at org.mortbay.util.Scanner.reportChange(Scanner.java:464)
>         at org.mortbay.util.Scanner.reportDifferences(Scanner.java:330)
>         at org.mortbay.util.Scanner.scan(Scanner.java:280)
>         at org.mortbay.util.Scanner$1.run(Scanner.java:232)
>         at java.util.TimerThread.mainLoop(Timer.java:512)
>         at java.util.TimerThread.run(Timer.java:462)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.