Spring中集成Hazelcast遇到的问题
最近在cms项目中出现了一个bug,该项目是集群部署的,程序中使用了缓存(非分布式缓存),导致多台服务器信息不一致的情况,在网上搜了下,发现Hazelcast可以很容易解决这样的问题,后来了解Hazelcast后,在Spring中集成了Hazelcast,可发现没有像文档中说的那样简单,老是出现问题,出现的第一个问题,就是下面一段代码出现注入的参数类型不一致问题:
<bean id="instance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance"> <constructor-arg> <bean class="com.hazelcast.config.Config"> <property name="groupConfig"> <bean class="com.hazelcast.config.GroupConfig"> <property name="name" value="dev"/> <property name="password" value="pwd"/> </bean> </property> <!-- and so on ... --> </bean> </constructor-arg> </bean> <bean id="map" factory-bean="instance" factory-method="getMap"> <constructor-arg value="map"/> </bean>
后来为了实例化上面这个类,我自己封装到了代码中,没有使用上面的配置文件,这个问题解决后,后面又写了一些测试代码,想测试一下分布式数据共享是否真能起作用,到最后程序部署完毕并测试的时候,发现多台服务器之间相同的变量数据还是不一致,不知道是怎么回事?当然我写了一个简单的demo测试是成功的,希望高手给我解答一下,纠结了很长时间,非常感谢!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
hazelcast的使用有点特殊。如果修改了一个对象的内容,必须put回到原来的集合中,才能起作用。
看下面的code.
Map map = ...
map.put("1", new MyObj());
map.get("1").setName("test");
map.get("1").getName();//对于普通的集合来说,这应该有值,但是hazelcast的没有。
必须hazelcast.put("1",obj)之后修改才能起作用,