Ne peut pas obtenir de connexion pour redisTemplate pour le Printemps de données redis
Je suis en train de publier un message sur un canal à l'aide de données du Printemps Redis à l'aide de Jedis. Voici un très simple Java config:
@Bean(name="jedisConnectionFactory")
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(redisHostName);
factory.setPort(redisPort);
factory.setUsePool(true);
return factory;
}
@Bean(name="redisTemplate")
RedisTemplate<Object, Object> redisTemplate() {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
return redisTemplate;
}
où redisPort=6379 et redisHostName="localhost".
Quand je lance le test suivant:
@Test
public void testRedis(){
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
RedisTemplate<Object,Object> redisTemplate = (RedisTemplate<Object, Object>) context.getBean("redisTemplate");
redisTemplate.convertAndSend("test", "123");
}
J'ai le stacktrace:
java.lang.ExceptionInInitializerError
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:252)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:58)
at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:128)
at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:91)
at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:78)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:178)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:153)
at org.springframework.data.redis.core.RedisTemplate.convertAndSend(RedisTemplate.java:676)
at com.jobvite.realtimeanalytics.redis.RedisTest.testRedis(RedisTest.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:224)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.NullPointerException
at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:443)
at org.springframework.data.redis.connection.jedis.JedisConnection.<clinit>(JedisConnection.java:108)
... 44 more
Vous devez vous connecter pour publier un commentaire.
Ce problème est provoqué par les Jedis version (2.7.2) n'est pas compatible avec le Printemps des Données Redis (1.5.0.De presse). J'ai utilisé 3 jours, face à la même question avant que je me laisse inspirer par ce post et les commentaires. Jedis version (2.6.2) fonctionne bien (bien que j'ai touché d'autres erreurs dans mon programme, mais au moins, ils ont des progrès que le même message d'erreur)!
Grâce.
S'avère que j'ai été en utilisant les Jedis 2.7.2 mais le Printemps de Données Redis 1.5.0 semble être compatible avec les Jedis 2.6.2. Je souhaite que ce ont été un peu plus clair dans la documentation en quelque sorte.
Version Compatible:
J'ai également fait face à un même genre de problème. J'ai fait quelques recherches et découvert que c'est en raison d'un pot de conflit.
Version Compatible j'utilise dans mon application est :
Ou si vous utilisez printemps de démarrage il suffit d'ajouter la dépendance suivant. Spring boot est assez intelligent pour auto résoudre de tels problèmes.
J'espère que cela aide !!
Version, j'ai rencontré le même problème,ce printemps-données-redis 1.5.0 pom
Navin Viswanath, merci pour la solution! Comment avez-vous trouver, à l'aide de documents ou de débogage?
Pour ceux qui utilisent Gradle, voici ma combinaison:
Versions:
construire.gradle:
Veuillez noter que les Données du Printemps Redis
1.6.0.M1
sera supprimé une fois qu'il devient de presse, vous devez le modifier pour1.6.0.RELEASE
quand il est disponible comme version.Alors, j'ai vérifié pour la version de compatibilité ici: https://github.com/spring-projects/spring-data-redis/blob/master/gradle.properties et trouvé liées JIRA billet ici: https://jira.spring.io/browse/DATAREDIS-396
a eu un problème similaire avec le ressort d'amorçage-starter-données-redis 2.0.4
quand j'ai mis implicitement la dépendance à des jedis dans l'app pom.xml c'est en quelque sorte travaillé
eclipse se plaint de "Dupliquer version gérée", mais tout le reste fonctionne
Pour ceux qui utilisent Printemps-amorçage-starter-données-redis
Une solution permanente peut être saisi comme suit:
eclipse, vous pouvez la souris sur la dépendance de l'entrée dans votre pom.xml
fichier. Il vous dira la version que vous utilisez.
1.50 de printemps-amorçage-starter-données-redis. Dans ce cas, j'ai dû ajouter
<version>2.6.2.RELEASE</version
.Qui devrait résoudre le problème.
Version Compatible: