0

For the following stacktrace of tomcat session replication, is there a way to show object reference graph for serialization? i.e.,

Object A in session -> Object B -> .... -> ClassFoo Object

In other words, how to show the object type to write for each writeObject() method in stacktrace?

Any object logging for java serialization?

java.io.NotSerializableException: com.example.ClassFoo
        at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)
        at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1543)
        at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1500)
        at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1423)
        at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1169)
        at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1543)
        at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1500)
        at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1423)
        at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1169)
        at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1543)
        at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1500)
        at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1423)
        at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1169)
        at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:345)
        at org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:438)
        at org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRequest.java:326)
        at org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaRequest.java:340)
        at org.apache.catalina.ha.session.DeltaSession.getDiff(DeltaSession.java:168)
        at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1046)
        at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1014)
        at org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve.java:527)
        at org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(ReplicationValve.java:515)
        at org.apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicationMessage(ReplicationValve.java:497)
        at org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage(ReplicationValve.java:409)
        at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:340)
eastwater
  • 4,624
  • 9
  • 49
  • 118
  • Run under the debugger and set breakpoints which log the classes of the objects being serialised. – tgdavies Jun 04 '23 at 08:30
  • Classic [XY problem](https://xyproblem.info/). 'Show[ing] object references' wont' help you here. What you really need to do is find where in your project you have `com.example.ClassFoo` as a non-transient non-static object field. – user207421 Jun 04 '23 at 10:02

0 Answers0