Exception Message "Future Serialization Exceptions For This Class Will Not Be Reported" Using Coherence*Web With coherence-preserve-attributes Set to True (Doc ID 1357834.1)

Last updated on NOVEMBER 03, 2016

Applies to:

Oracle Coherence - Version 3.6.0 and later
Information in this document applies to any platform.
***Checked for relevance on 23-Sep-2013***

Symptoms

The error shown below is reported by a web container running a web application that is configured to use Coherence*Web for its HTTP Session store, in which you have set the following option in the application's web.xml file:

coherence-preserve-attributes=true


which, when set to true, specifies that non-serializable attributes should be preserved as local ones.

Here is the error stack:

2011-08-10 16:33:50.562/731.281 Oracle Coherence GE 3.6.0.0 <Warning> (thread=[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)', member=6): Failed to serialize the MyAttribute attribute (of type "com.company.some.ContainerObject") for session c5UwjGlFobvRVA4rY8cgBgh8n97Zs1G08jdeHC6iRfIzJeUyIga1
The unserializable attribute value toString(): " com.company.some.ContainerObject@123acf ".
The following exception occurred during its serialization:
java.io.NotSerializableException:
com.company.some.SomeNonSerializableObject
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.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)
...
... Additional serialization stack frames deleted for clarity
...
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at com.tangosol.util.ExternalizableHelper.writeSerializable(ExternalizableHelper.java:2216)
at com.tangosol.util.ExternalizableHelper.writeObjectInternal(ExternalizableHelper.java:2638)
at com.tangosol.util.ExternalizableHelper.serializeInternal(ExternalizableHelper.java:2564)
at com.tangosol.util.ExternalizableHelper.toBinary(ExternalizableHelper.java:211)
at com.tangosol.coherence.servlet.TraditionalHttpSessionModel$OptimizedHolder.serializeValue(TraditionalHttpSessionModel.java:277)
at com.tangosol.coherence.servlet.TraditionalHttpSessionModel$OptimizedHolder.getBinary(TraditionalHttpSessionModel.java:181)
at com.tangosol.coherence.servlet.TraditionalHttpSessionModel$OptimizedHolder.prepareWrite(TraditionalHttpSessionModel.java:308)
at com.tangosol.coherence.servlet.SplitHttpSessionModel$SplittableHolder.prepareWrite(SplitHttpSessionModel.java:528)
at com.tangosol.coherence.servlet.AbstractHttpSessionModel$AttributeHolder.flush(AbstractHttpSessionModel.java:2398)
at com.tangosol.coherence.servlet.SplitHttpSessionModel$SplittableHolder.flush(SplitHttpSessionModel.java:326)
at com.tangosol.coherence.servlet.AbstractHttpSessionModel.flush(AbstractHttpSessionModel.java:1585)
at com.tangosol.coherence.servlet.SplitHttpSessionModel.flush(SplitHttpSessionModel.java:104)
at com.tangosol.coherence.servlet.AbstractHttpSessionCollection.exit(AbstractHttpSessionCollection.java:706)
at com.tangosol.coherence.servlet.SessionHelper.exitSession(SessionHelper.java:2267)
at weblogic.servlet.internal.session.CoherenceWebSessionContextImpl.sync(CoherenceWebSessionContextImpl.java:377)
at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2740)
at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2715)
at weblogic.servlet.internal.ServletResponseImpl$1.run(ServletResponseImpl.java:1478)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1472)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1441)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

(Future serialization exceptions for this class will not be reported.)

Changes

If this error wasn't being seen before, then potentially a change to the application code may have resulted in a non-serializable object being stored as an HttpSession attribute.  As a result you may then have used the coherence-preserve-attributes=true to provide a workaround for this.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms