hazelcast在同一台物理机

时间:2018-03-12 23:03:19

标签: hazelcast

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

Biswa,

     HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();

每次调用doGet方法时,此行都会创建一个新的Hazelcast实例。您只需创建一次Hazelcast实例,然后使用它来访问分布式对象。我相信CacheHelper.getCacheInstance()方法可以做到这一点。

对于第二个问题,是的,默认情况下,Hazelcast节点会发现其他成员 通过组播,所以不需要配置。

请确保每个应用中只有一个Hazelcast.newHazelcastInstance()来电。您使用该实例访问dist.objects。