同一物理机中两个 Jboss 实例的 hazelcast 配置

hazelcast Configuration for two Jboss instances in same physical machine

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

谢谢, 比斯瓦

比斯瓦,

     HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();

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

对于第二个问题,是的,Hazelcast节点默认发现其他成员 通过多播,因此无需配置。

请确保您在每个应用程序中只有一个 Hazelcast.newHazelcastInstance() 调用并且您使用该实例访问 dist.objects。