0

我有一个 jboss 5.1 AS,我在其中尝试使用 memcached 和 kryo 序列化实现会话复制。一切正常,但我的应用程序中有一个页面,它的左侧有一些弹性功能。当我在 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)

我已经被困了很多天,无法解决问题。请帮忙

4

1 回答 1

0

要序列化您的 HTTPSession,您需要序列化 ​​HttpFlexSession,它可能是不可序列化的(或者您通过禁用 Serializable 对象的序列化来使用严格的 kryo 配置)。

您应该向 kryo 提供一个类来序列化 HttpFlexSession:

Kryo kryo = new Kryo();
kryo.register(HttpFlexSession.class, new HttpFlexSessionSerializer(kryo));

然后你需要实现应该扩展 Serializer 的 HttpFlexSessionSerializer.java 然后你应该能够用 kryo 序列化你的 flex 会话。

于 2013-11-22T07:40:47.040 回答