I'm having a strange problem and I'm not sure how to debug this. When an entity gets updated on client by data publisher, I seem to have a problem when trying to serialize that same entity on server. This only occurs on some entities. I'm trying to make this reproducible if I can find out whats actually triggering this. I didn't always have this problem but something is breaking this flow now. I get the following exception on the server. This is odd because granite will convert all of my observable collections into real List collections on server. But the stacktrace below does not tell me which field its having a problem with.
I will attempt to backtrace and see if any recent commits broke something but our entities are all generated by granite and serialized automatically. Can anyone explain what granite is complaining about here, is it saying that i'm trying to send a granite client class to the server which doesn't exist?
I'm using Java 8 on client and server.
java.lang.ClassNotFoundException: org.granite.client.javafx.persistence.collection.ObservablePersistentBag
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.granite.messaging.reflect.Reflection.loadClass(Reflection.java:97)
at org.granite.messaging.jmf.JMFDeserializer.getClassDescriptor(JMFDeserializer.java:265)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:165)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.JMFDeserializer.readAndSetProperty(JMFDeserializer.java:336)
at org.granite.hibernate4.jmf.EntityCodec.decode(EntityCodec.java:172)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:160)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.readObjectArray0(ObjectArrayCodecImpl.java:215)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.decode(ObjectArrayCodecImpl.java:165)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.persistence.JMFPersistentCollectionSnapshot.readCoreData(JMFPersistentCollectionSnapshot.java:167)
at org.granite.hibernate4.jmf.AbstractPersistentCollectionCodec.decode(AbstractPersistentCollectionCodec.java:87)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:160)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.JMFDeserializer.readAndSetProperty(JMFDeserializer.java:336)
at org.granite.hibernate4.jmf.EntityCodec.decode(EntityCodec.java:172)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:160)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.readObjectArray0(ObjectArrayCodecImpl.java:215)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.decode(ObjectArrayCodecImpl.java:165)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.persistence.JMFPersistentCollectionSnapshot.readCoreData(JMFPersistentCollectionSnapshot.java:167)
at org.granite.hibernate4.jmf.AbstractPersistentCollectionCodec.decode(AbstractPersistentCollectionCodec.java:87)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:160)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.JMFDeserializer.readAndSetProperty(JMFDeserializer.java:336)
at org.granite.hibernate4.jmf.EntityCodec.decode(EntityCodec.java:172)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:160)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.readObjectArray0(ObjectArrayCodecImpl.java:215)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.decode(ObjectArrayCodecImpl.java:165)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.readObjectArray0(ObjectArrayCodecImpl.java:215)
at org.granite.messaging.jmf.codec.std.impl.ObjectArrayCodecImpl.decode(ObjectArrayCodecImpl.java:165)
...
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.codec.std.impl.ArrayListCodecImpl.decode(ArrayListCodecImpl.java:84)
at org.granite.messaging.jmf.codec.std.impl.ArrayListCodecImpl.decode(ArrayListCodecImpl.java:40)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.jmf.JMFDeserializer.readAndSetProperty(JMFDeserializer.java:336)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decodeSerializable(ObjectCodecImpl.java:241)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decodeSerializable(ObjectCodecImpl.java:226)
at org.granite.messaging.jmf.codec.std.impl.ObjectCodecImpl.decode(ObjectCodecImpl.java:179)
at org.granite.messaging.jmf.JMFDeserializer.readObject(JMFDeserializer.java:130)
at org.granite.messaging.webapp.AMFEndpoint.serviceJMFAMF(AMFEndpoint.java:147)
at org.granite.messaging.webapp.AMFEndpoint.service(AMFEndpoint.java:64)
at org.granite.spring.ServerFilter.handle(ServerFilter.java:331)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
....