1
votes

I am running clustering with tomcat 5.5 in my catalina.out i keep seeing the error [ERROR] Unable to serialize delta request for sessionid [DBBAF413162AE8B1AA1DB011CFA689C5.worker1]

I have tried to go back and make sure all my objects that get put in the session are Serializable, but this is a really big application so i must be missing something.

Is there anyway i can get more info on maybe what the offending object is? Thanks Randy

2012-07-03 11:35:26 DeltaManager [ERROR] Unable to serialize delta request for sessionid [DBBAF413162AE8B1AA1DB011CFA689C5.worker1] java.io.NotSerializableException: org.apache.catalina.core.ApplicationContextFacade at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) at org.apache.catalina.cluster.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:346) at org.apache.catalina.cluster.session.DeltaRequest.writeExternal(DeltaRequest.java:263) at org.apache.catalina.cluster.session.DeltaManager.unloadDeltaRequest(DeltaManager.java:695) at org.apache.catalina.cluster.session.DeltaManager.requestCompleted(DeltaManager.java:1249) at org.apache.catalina.cluster.tcp.ReplicationValve.sendSessionReplicationMessage(ReplicationValve.java:328) at org.apache.catalina.cluster.tcp.ReplicationValve.invoke(ReplicationValve.java:271) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)

2
Can you post the stacktrace ? - David Levesque

2 Answers

0
votes

The stacktrace tells you that the offending object is ApplicationContextFacade. Look into the code where objects are put in the session (usually by a call to HttpServletSession.put()) and see if any of these objects contains an instance variable of type ApplicationContextFacade or ServletContext. Also look into any nested object.

0
votes

I experienced a near identical error, except that I was getting a random email out of the error logging. It popped up a bit randomly, in one general area but not when I traced over any specific line of code.

Logger = org.apache.catalina.ha.session.DeltaManager

message = Unable to serialize delta request for sessionid

The stack trace started with

java.io.NotSerializableException: org.mycompany.SomeRandomPojo
    at java.io.ObjectOutputStream.writeObject
    ...
    ...
    no other objects from MyCompany anywhere in the stack trace

for whatever reason the latest changes I made to the project cause the app to be suddenly unhappy that SomeRandomPojo was not serializable. I made it implement serializable and then a second closely related object popped off with the same error. I made that object implement serializable and the project was on greenbar. Go figure. Hmmm, I did just upgrade Intellij to 2020.2.3 this week, probably the first time I've run this test like this since then.