2017-12-19 27 views
0

私はredisからデータを読み込むアプリケーションを持っています。私は以下の例外スタックを取得していますorg.springframework.data.redis.serializer.SerializationException

org.springframework.data.redis.serializer.SerializationException:デシリアライズできません。ネストされた例外はorg.springframework.core.serializer.support.SerializationFailedExceptionです:ペイロードをデシリアライズできませんでした。バイト配列は、DefaultDeserializerの対応するシリアル化の結果ですか?ネストされた例外はjava.io.StreamCorruptedExceptionです:無効なストリームヘッダ:7B226C65 at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:41)〜[spring-data-redis-1.4.2.RELEASE。 jar:1.4.2.RELEASE] at org.springframework.data.redis.core.AbstractOperations.deserializeHashValue(AbstractOperations.java:296)〜[spring-data-redis-1.4.2.RELEASE.jar:1.4.2。 RELEASE] at org.springframework.data.redis.core.AbstractOperations.deserializeHashMap(AbstractOperations.java:257)〜[spring-data-redis-1.4.2.RELEASE.jar:1.4.2.RELEASE] at org。 springframework.data.redis.core.DefaultHashOperations.entries(DefaultHashOperations.java:227)〜[spring-data-redis-1.4.2.RELEASE.jar:1.4.2.RELEASE] at com.engine.Template.getDataFromMap( Template.java:38)〜[classes/:?] at com.engine.Utils.getLevelInfoFrom(Utils.java:199)〜[classes/:?] at com.engine.Utils.getData(Utils.java:368)〜[classes/:?] at com。 (JmsMessageReceiver.java:56)[classes/:?] at com.engine.jms.JmsMessageReceiver.onMessage(JmsMessageReceiver.java:56)[クラス/:] at org.springframework .jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:746)[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer。 java:684)[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:651) [spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:315)[spring-jms-4.2.4.RELEASE。 jar:4.2.4.RELEASE] at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253)[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] の組織で.springframework.jms.listener.DefaultMessageListenerContainer $ AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1150)[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer $ AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1142)[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.jms.listener.DefaultMessageListenerContainer $ AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1039)[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE] でのjava.lang.Thread.run(スレッド.java:745)[?:1.8.0_74] 原因:org.springframework.core.serializer.support.SerializationFailedException:ペイロードを逆シリアル化できませんでした。バイト配列は、DefaultDeserializerの対応するシリアル化の結果ですか?ネストされた例外はjava.io.StreamCorruptedExceptionです:無効なストリームヘッダ:7B226C65 at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:78)〜[spring-core-4.2.4.RELEASE.jar: 4.2.4.RELEASE] at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:36)〜[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] at (JdkSerializationRedisSerializer.java:39)〜[spring-data-redis-1.4.2.RELEASE.jar:1.4.2.RELEASE] ...17 more 原因:java.io.StreamCorruptedException:無効なストリームヘッダー:7B226C65 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:806)〜[?:1.8.0_74] at java.io.ObjectInputStream。( (configurableObjectInputStream.java:64)〜[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]のようになります。 ] at org.springframework.core.ConfigurableObjectInputStream(ConfigurableObjectInputStream.java:50)〜[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.core.serializer.DefaultDeserializer。 deserialize(DefaultDeserializer.java:68)〜[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.core.serializer.support.DeserializingConverter.convert(Dese rializingConverter.java:73)〜[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:36)〜[ spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:39)〜[spring-data-redis-1.4。 2.RELEASE.jar:1.4.2.RELEASE]もっと ... 17

私は他のフォーラムで解決策を探して試してみましたが、私はすべてのソリューションを参照してくださいいけません。コードブロックが下にあります

String receivedJSON = (String) redisTemplate.opsForHash().get(redisKey, hashKey); 

誰かが解決策を見つけたり、この問題に直面した場合でも対応してください。

答えて

0

私はこれに対する解決策を得ました。問題は、hashValueを文字列シリアライザを使用してシリアル化する必要があることでした。 Defaultシリアライザを文字列シリアライザとして設定した後、私は解決策を見つけて自分の必要条件を完了できました。

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" 
     p:connection-factory-ref="redisConnectionFactory"> 
     <property name="defaultSerializer" ref="stringSerializer" /> 
    </bean> 

    <bean id="stringSerializer" 
     class="org.springframework.data.redis.serializer.StringRedisSerializer" />