ICEfaces
  1. ICEfaces
  2. ICE-11549

Fix java.io.NotSerializableException

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-4.3.0.GA_P04, EE-3.3.0.GA_P10
    • Fix Version/s: EE-3.3.0.GA_P11
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Java 5

      Description

      When using HTTP session persistence and replication the web server needs to serialise and deserialise the objects stored into the session map.
      It turns out that org.icefaces.impl.application.WindowScopeManager class has a static field that is deserialised, but the field is not Serializable or Externalizable.
      Static fields are never serialised but they can be deserialised if the filed is initialised while the class loads.

        Activity

        Mircea Toma created issue -
        Mircea Toma made changes -
        Field Original Value New Value
        Description When using HTTP session persistence and replication the web server needs to serialise and deserialise the objects stored into the session map.
        It turns out that {{org.icefaces.impl.application.WindowScopeManager}} class has a static field that is deserialised, but the field is not {{Serializable}} or {{Externalizable}}.
        Static fields are never serialised but they can be deserialised if the filed is initialised while the class loads.

        {code}
        WARNING: Session Attribute [org.icefaces.impl.application.WindowScopeManager] for session [7289AC7947D06E75009E8F1BC336A213] cannot be serialized
        java.io.NotSerializableException: org.icefaces.impl.application.TimeBasedWindowScopeTracker
                  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
                  at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
                  at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
                  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
                  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
                  at java.util.HashMap.internalWriteEntries(HashMap.java:1817)
                  at java.util.HashMap.writeObject(HashMap.java:1364)
                  at sun.reflect.GeneratedMethodAccessor183.invoke(Unknown Source)
                  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                  at java.lang.reflect.Method.invoke(Method.java:498)
                  at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1154)
                  at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
                  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
                  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
                  at org.icefaces.impl.application.WindowScopeManager$State.writeExternal(WindowScopeManager.java:338)
                  at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
                  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
                  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
                  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
                  at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1700)
                  at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1092)
                  at com.p7s1.moso.redissessionstore.RedisStore.serializeSession(RedisStore.java:267)
                  at com.p7s1.moso.redissessionstore.RedisStore.save(RedisStore.java:193)
                  at com.p7s1.moso.redissessionstore.RedisSessionManager.processEndAccessEvent(RedisSessionManager.java:164)
                  at com.p7s1.moso.redissessionstore.RedisSessionManager.sessionEvent(RedisSessionManager.java:149)
                  at org.apache.catalina.session.StandardSession.fireSessionEvent(StandardSession.java:1808)
                  at com.p7s1.moso.redissessionstore.RedisSession.endAccess(RedisSession.java:29)
                  at org.apache.catalina.connector.Request.recycleSessionInfo(Request.java:561)
                  at org.apache.catalina.connector.Request.recycle(Request.java:510)
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:525)
                  at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1195)
                  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
                  at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:319)
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                  at java.lang.Thread.run(Thread.java:750)
         
        Jan 30, 2023 5:07:54 PM org.apache.catalina.session.StandardSession readObject
        WARNUNG: Cannot deserialize session attribute [org.icefaces.impl.application.WindowScopeManager] for session [863045793C65D0BCE40EBA1EAC7DB917]
        {code}
        When using HTTP session persistence and replication the web server needs to serialise and deserialise the objects stored into the session map.
        It turns out that org.icefaces.impl.application.WindowScopeManager class has a static field that is deserialised, but the field is not Serializable or Externalizable.
        Static fields are never serialised but they can be deserialised if the filed is initialised while the class loads.
        Ken Fyten made changes -
        Fix Version/s EE-3.3.0.GA_P11 [ 14074 ]
        Arturo Zambrano made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Mircea Toma
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: