我有一个jboss 5.1,我正在尝试使用memcached和kryo序列化来实现会话复制。一切都很好,但我的应用程序中有一个页面,它的左侧有一些flex功能。当我在GUI中单击此页面时,kryo序列化失败,并显示以下堆栈跟踪:
Caused by: com.esotericsoftware.kryo.SerializationException: Unable to serialize object of type: flex.messaging.HttpFlexSession
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:493)
at com.esotericsoftware.kryo.serialize.MapSerializer.writeObjectData(MapSerializer.java:104)
at de.javakaffee.kryoserializers.CopyForIterateMapSerializer.writeObjectData(CopyForIterateMapSerializer.java:56)
at com.esotericsoftware.kryo.Serializer.writeObject(Serializer.java:43)
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:520)
... 23 more
Caused by: com.esotericsoftware.kryo.SerializationException: Unable to serialize object of type: flex.messaging.SessionMetricsTracker
Serialization trace:
destroyedListeners (flex.messaging.HttpFlexSession)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:493)
at com.esotericsoftware.kryo.serialize.CollectionSerializer.writeObjectData(CollectionSerializer.java:86)
at de.javakaffee.kryoserializers.CopyForIterateCollectionSerializer.writeObjectData(CopyForIterateCollectionSerializer.java:46)
at com.esotericsoftware.kryo.serialize.FieldSerializer.writeObjectData(FieldSerializer.java:175)at com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.writeObjectData(ReferenceFieldSerializer.java:52)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:489)
Caused by: com.esotericsoftware.kryo.SerializationException: Unable to serialize object of type: org.jboss.mx.notification.ListenerRegistry
Serialization trace:
registries (org.jboss.mx.notification.MBeanServerListenerRegistry)
listeners (org.jboss.mx.server.MBeanServerImpl)
mbeanServer (org.jboss.classloader.spi.ClassLoaderDomain)
domain (org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy)
delegate (org.jboss.classloader.spi.DelegateLoader)
loader (org.jboss.classloader.spi.base.BaseClassLoader)
classLoader (flex.messaging.MessageBroker)
messageBroker (flex.messaging.SessionMetricsTracker)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:493)我已经被困了很多天了,无法解决这些问题。请帮帮忙
发布于 2013-11-22 15:40:47
要序列化您的HTTPSession,您需要序列化HttpFlexSession,而它可能是不可序列化的(或者您正在通过禁用serializable对象上的序列化来使用严格的kryo配置)。
您应该向kryo提供一个类来序列化HttpFlexSession:
Kryo kryo = new Kryo();
kryo.register(HttpFlexSession.class, new HttpFlexSessionSerializer(kryo));然后你需要实现应该扩展序列化的HttpFlexSessionSerializer.java,然后你应该能够用kryo来序列化你的flex会话。
https://stackoverflow.com/questions/16433088
复制相似问题