我正在尝试使用hazelcast进行缓存。我们在同一物理机器上的两个jboss 7.1实例上运行了两个应用程序。两个应用程序都在不同的端口运行。
以下是我启动服务器节点的代码。
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
HazelcastInstance hazelcastInstance = CacheHelper.getCacheInstance();
Map<Long, String> cache = hazelcastInstance.getMap("data");
Long inputKey = Long.parseLong(request.getParameter("inputKey"));
String inputMsg = request.getParameter("inputMsg");
StringBuffer mainStr = null;
if(null != inputMsg && !(inputMsg.trim().equalsIgnoreCase(""))){
if(null!=inputKey && inputKey != 0 && cache.containsKey(inputKey)) {
mainStr = new StringBuffer(cache.get(inputKey));
mainStr.append(inputMsg);
} else {
mainStr = new StringBuffer(inputMsg);
}
cache.put(inputKey,mainStr.toString());
}
}
每次我获得新缓存。
我的理解是否正确我们只需要创建两个服务器节点。它会自动发现其他节点。它不需要任何类型的XML配置。
谢谢, Biswa
答案 0 :(得分:1)
Biswa,
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
每次调用doGet
方法时,此行都会创建一个新的Hazelcast实例。您只需创建一次Hazelcast实例,然后使用它来访问分布式对象。我相信CacheHelper.getCacheInstance()
方法可以做到这一点。
对于第二个问题,是的,默认情况下,Hazelcast节点会发现其他成员 通过组播,所以不需要配置。
请确保每个应用中只有一个Hazelcast.newHazelcastInstance()
来电。您使用该实例访问dist.objects。