Weird values when using embedded distributed cache with HotRod client/server
fly_ Mar 16, 2015 11:56 AMHi JBoss community,
I'm trying to use Infinispan (7.1.0.Final) as a distributed cache and to expose it through hotrod protocole.
I started with the sample project from Tristan Tarrant (thanks to him) here https://github.com/tristantarrant/infinispan-playground-embedded-hotrod
All worked fine until I tried to use a distributed cache. Now, all values I insert are weird (random) values (look like serialized data).
When I used the cache as a local cache all is ok.
Here is the code SimpleEmbeddedHotRodServer.java :
public static void main(String[] args) throws Exception {
// disabled for test
//org.infinispan.configuration.cache.ConfigurationBuilder embeddedBuilder = new org.infinispan.configuration.cache.ConfigurationBuilder();
//embeddedBuilder.dataContainer().keyEquivalence(new AnyServerEquivalence()).valueEquivalence(new AnyServerEquivalence());
DefaultCacheManager defaultCacheManager = new DefaultCacheManager("distributed.xml");
HotRodServerConfiguration build = new HotRodServerConfigurationBuilder().build();
HotRodServer server = new HotRodServer();
server.start(build, defaultCacheManager);
ConfigurationBuilder remoteBuilder = new ConfigurationBuilder();
remoteBuilder.addServers("localhost");
RemoteCacheManager remoteCacheManager = new RemoteCacheManager(remoteBuilder.build());
RemoteCache<String, String> remoteCache = remoteCacheManager.getCache();
System.out.print("Inserting data into cache...");
String s = "asRemote";
remoteCache.put(s, s);
System.out.print("\nVerifying data...");
System.out.printf("%s...", remoteCache.get(s));
System.out.print("\nNow using as a local cache");
Cache<String, String> cache = defaultCacheManager.getCache();
s = "asLocal";
cache.put(s, s);
System.out.print("\nVerifying data...");
System.out.printf("%s...", cache.get(s));
System.out.print("\nWhat is in my cache ?");
System.out.printf("\nCache have %s entries", cache.size());
for(Map.Entry<String, String> entry : cache.entrySet()) {
System.out.printf("\n\t\tCache entry %s : value %s", entry.getKey(), entry.getValue());
}
System.out.println("\nDone !");
remoteCacheManager.stop();
server.stop();
defaultCacheManager.stop();
}
and the conf distributed.xml :
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:infinispan:config:7.1"
xsi:schemaLocation="urn:infinispan:config:7.1 http://www.infinispan.org/schemas/infinispan-config-7.1.xsd ">
<!-- minimal config -->
<cache-container default-cache="my-cache" statistics="true" >
<transport />
<distributed-cache name="my-cache" l1-lifespan="30000" owners="2" mode="SYNC" statistics="true" />
</cache-container>
</infinispan>
Now What I get when I mvn exec:java :
....
Inserting data into cache...
Verifying data...null...
Now using as a local cache
Verifying data...asLocal...
What is in my cache ?
Cache have 2 entries
Cache entry [B@1d422062 : value [B@31d7ed1d
Cache entry asLocal : value asLocal
Done !
........
I can't figured out what goes wrong.
Any Idea ?
Thanks for your help.
Regards,