2016-09-26 2 views
0

Я инициализация моего кэша следующим образом:Ehcache Нет сериализатор не найден

CacheManager cacheManager; 

cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build(); 
cacheManager.init(); 

Cache<String, SmsMessageDto> myCache = cacheManager.createCache("myCache", CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, SmsMessageDto.class) 
    .withExpiry(Expirations.timeToLiveExpiration(new Duration(cacheDuration, TimeUnit.MINUTES))) 
    .build()); 

Что дает мне следующее предупреждение:

org.ehcache.core.EhcacheManager - Could not create serializers for myCache 
org.ehcache.spi.serialization.UnsupportedTypeException: No serializer found for type 'com.example.dto.SmsMessageDto' 
    at org.ehcache.impl.internal.spi.serialization.DefaultSerializationProvider$AbstractProvider.getClassFor(DefaultSerializationProvider.java:271) ~[ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.impl.internal.spi.serialization.DefaultSerializationProvider$TransientProvider.createSerializer(DefaultSerializationProvider.java:149) ~[ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.impl.internal.spi.serialization.DefaultSerializationProvider$AbstractProvider.createValueSerializer(DefaultSerializationProvider.java:239) ~[ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.impl.internal.spi.serialization.DefaultSerializationProvider.createValueSerializer(DefaultSerializationProvider.java:96) ~[ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.core.EhcacheManager.getStore(EhcacheManager.java:455) [ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.core.EhcacheManager.createNewEhcache(EhcacheManager.java:308) [ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.core.EhcacheManager.createCache(EhcacheManager.java:261) [ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at org.ehcache.core.EhcacheManager.createCache(EhcacheManager.java:240) [ehcache-3.0.0.rc1.jar:3.0.0.rc1] 
    at at.xcard.helper.SmsFailedCache.init(SmsFailedCache.java:45) [classes/:na] 
    at at.xcard.SmsWorker.<init>(SmsWorker.java:49) [classes/:na] 
    at at.xcard.Main.main(Main.java:36) [classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_25] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_25] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_25] 
    at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_25] 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) [idea_rt.jar:na] 

ВОПРОС: как я могу убедить Ehcache использовать мой toString для объекта com.example.dto.SmsMessageDto?

ответ

0

Учитывая, что вы не используете периферийный или дисковый уровень, для сериализатора не требуется.

Теперь я вижу, что вы используете версию 3.0.0.rc1. Я бы настоятельно рекомендовал не использовать RC в этот момент и вместо этого использовать последние (на данный момент) 3.1.2.

Я верю, что вы испытываете ошибку, которая, скорее всего, была исправлена ​​с тех пор.

+0

Я испытал это как с 3.1.2 и 3.1 .3 и это все еще происходит, к сожалению. –

+0

Не могли бы вы обновить свой вопрос с помощью нового кода, который вы используете для этого? и соответствующей трассировки стека. Я также сделаю более полный ответ, охватывающий ваши варианты в Ehcache. Для чего это стоит, я сделал тест на месте и не могу воспроизвести проблему. –

0

Короче говоря, это невозможно. Вы должны реализовать интерфейс Serializable в своем классе SmsMessageDto. Он создаст сериализатор для вашего класса Serializable, и Exception не будет отображаться снова. Этот ответ был основан в следующей ссылке http://www.ehcache.org/documentation/3.1/serializers-copiers.html раздела «КОМПЛЕКТ реализаций»

Из документации: «По умолчанию менеджеры кэш предварительно настроено специально оптимизированной Serializer, который может обрабатывать следующие типы, в следующем порядке:

java.io.Serializable

java.lang.Long

java.lang.Integer

java.lang.Float

java.lang.Double

java.lang.Character

java.lang.String

байт []»

Смежные вопросы