0

memcached と kryo serialization を使用してセッションレプリケーションを実装しようとしている jboss 5.1 AS があります。すべて正常に動作していますが、私のアプリケーションには、左側にいくつかのフレックス機能があるページがあります。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 構成を使用しています)。

HttpFlexSession をシリアライズするクラスを kryo に提供する必要があります。

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

次に、Serializer を拡張する HttpFlexSessionSerializer.java を実装する必要があります。その後、kryo でフレックス セッションをシリアル化できるはずです。

于 2013-11-22T07:40:47.040 に答える