You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Djee (JIRA)" <ji...@apache.org> on 2013/06/04 10:54:23 UTC
[jira] [Created] (KARAF-2355) Encoding issue for Redis key using
xml blueprint
Djee created KARAF-2355:
---------------------------
Summary: Encoding issue for Redis key using xml blueprint
Key: KARAF-2355
URL: https://issues.apache.org/jira/browse/KARAF-2355
Project: Karaf
Issue Type: Bug
Affects Versions: 2.3.1
Environment: Karaf 2.3.1
Camel 2.11.0
JDK 1.7
Reporter: Djee
When trying to use the spring-camel-redis feature with the first xml blueprint, I met the issue of a wrong encoding for the keys. For example, the key "test" will be registered in Redis as \xac\xed\x00\x05t\x00\x04test.
----
<?xml version="1.0" encoding="UTF8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<camelContext xmlns="http://camel.apache.org/schema/blueprint" id="monAutreContXML">
<route>
<from uri="stream:file?fileName=./inboxRedis/test&scanStream=true"/>
<setHeader headerName="CamelRedis.Key">
<constant>test</constant>
</setHeader>
<to uri="spring-redis://ip.of.server?command=SET"/>
<to uri="stream:out"/>
</route>
</camelContext>
</blueprint>
----
After some researches, it looks like it comes from the lack of a StringRedisSerializer in a RedisTemplate. But, when I tried to create one in the second blueprint :
----
<?xml version="1.0" encoding="UTF8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="ip.of.server" />
<property name="port" value="6379"/>
</bean>
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
<bean id="RedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="redisConnectionFactory"/>
<property name="keySerializer" ref = "stringRedisSerializer"/>
<property name="hashKeySerializer" ref = "stringRedisSerializer"/>
<property name="valueSerializer" ref = "stringRedisSerializer"/>
<property name="hashValueSerializer" ref = "stringRedisSerializer"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/blueprint" id="monAutreContXML">
<route>
<from uri="stream:file?fileName=./inboxRedis/test&scanStream=true"/>
<setHeader headerName="CamelRedis.Key">
<constant>myKey</constant>
</setHeader>
<to uri="stream:out"/>
<to uri="spring-redis://ip.of.server?command=SET&redisTemplate=#RedisTemplate"/></route>
</camelContext>
</blueprint>
----
I got the following error :
----
org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting property: PropertyDescriptor <name: keySerializer, getter: class org.springfram
ework.data.redis.core.RedisTemplate.getKeySerializer(), setter: [class org.springframework.data.redis.core.RedisTemplate.setKeySerializer(interface org.springfr
amework.data.redis.serializer.RedisSerializer)]
at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:941)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[7:org.apache.aries.blueprint.core:1.1.0]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0_21]
at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0_21]
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:668)[7:org.apache.aries.blueprint.
core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:370)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:261)[7:org.apache.aries.blueprint.core:1.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_21]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0_21]
at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0_21]
at org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)[7:org.apache.aries.blueprint.core:1.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_21]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0_21]
at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0_21]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_21]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_21]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_21]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_21]
at java.lang.Thread.run(Thread.java:722)[:1.7.0_21]
Caused by: java.lang.Exception: Unable to convert value org.springframework.data.redis.serializer.StringRedisSerializer@1512df87 to type org.springframework.dat
a.redis.serializer.RedisSerializer<java.lang.Object>
at org.apache.aries.blueprint.container.AggregateConverter.convert(AggregateConverter.java:184)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BlueprintRepository.convert(BlueprintRepository.java:402)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.convert(ReflectionUtils.java:394)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.utils.ReflectionUtils$MethodPropertyDescriptor.internalSet(ReflectionUtils.java:628)[7:org.apache.aries.blueprint.core:1.1
.0]
at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.set(ReflectionUtils.java:378)[7:org.apache.aries.blueprint.core:1.1.0]
at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:939)[7:org.apache.aries.blueprint.core:1.1.0]
... 26 more
----
Here is the list of bundles installed and with only this blueprint in the deploy directory :
----
START LEVEL 100 , List Threshold: 50
ID State Blueprint Spring Level Name
[ 62] [Active ] [ ] [ ] [ 50] camel-core (2.11.0)
[ 63] [Active ] [Created ] [ ] [ 50] camel-karaf-commands (2.11.0)
[ 78] [Active ] [ ] [ ] [ 50] geronimo-jta_1.1_spec (1.1.1)
[ 79] [Active ] [ ] [ ] [ 50] camel-spring (2.11.0)
[ 80] [Active ] [Created ] [ ] [ 50] camel-blueprint (2.11.0)
[ 109] [Active ] [ ] [ ] [ 50] Commons Codec (1.6.0)
[ 110] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: commons-beanutils (1.8.3.1)
[ 111] [Active ] [ ] [ ] [ 50] Commons Collections (3.2.1)
[ 112] [Active ] [ ] [ ] [ 50] Commons Configuration (1.8.0)
[ 113] [Active ] [ ] [ ] [ 50] Commons Digester (2.1)
[ 114] [Active ] [ ] [ ] [ 50] Commons JXPath (1.3)
[ 115] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: jdom (1.1.0.4)
[ 116] [Active ] [ ] [ ] [ 50] Commons Lang (2.6)
[ 117] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: ant (1.7.0.6)
[ 118] [Active ] [ ] [ ] [ 50] Commons Daemon (1.0.5)
[ 119] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: commons-httpclient (3.1.0.7)
[ 120] [Active ] [ ] [ ] [ 50] Commons Math (2.2)
[ 121] [Active ] [ ] [ ] [ 50] Commons Net (3.2.0)
[ 122] [Active ] [ ] [ ] [ 50] Jackson JSON processor (1.9.12)
[ 123] [Active ] [ ] [ ] [ 50] Data mapper for Jackson JSON processor (1.9.12)
[ 124] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: jetty (6.1.26.4)
[ 125] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: hadoop-core (1.1.1.1)
[ 126] [Active ] [ ] [ ] [ 50] camel-hdfs (2.11.0)
[ 127] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Specs :: JCR API 2.0 (2.2.0)
[ 128] [Active ] [ ] [ ] [ 50] Jackrabbit JCR Commons (2.5.2)
[ 129] [Active ] [ ] [ ] [ 50] Jackrabbit WebDAV Library (2.5.2)
[ 130] [Active ] [ ] [ ] [ 50] Commons JEXL (2.0.1)
[ 131] [Active ] [ ] [ ] [ 50] Commons VFS Core (2.0)
[ 132] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: xmlresolver (1.2.0.5)
[ 133] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: jsch (0.1.49.1)
[ 142] [Active ] [ ] [ ] [ 50] Commons Pool (1.6.0)
[ 143] [Active ] [ ] [ ] [ 50] Spring Data Redis Support (1.0.3.RELEASE)
[ 144] [Active ] [ ] [ ] [ 50] Apache ServiceMix :: Bundles :: jedis (2.1.0.1)
[ 145] [Active ] [ ] [ ] [ 50] camel-spring-redis (2.11.0)
[ 147] [Active ] [ ] [ ] [ 50] camel-http (2.11.0)
[ 158] [Active ] [ ] [ ] [ 50] camel-stream (2.11.0)
[ 170] [Active ] [Failure ] [ ] [ 80] camel-test.xml (0.0.0)
[ 172] [Active ] [ ] [ ] [ 50] camel-ftp (2.11.0)
----
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira