infinispan嵌入式缓存,具有两个进程相同的机器

时间:2015-05-23 14:56:40

标签: caching infinispan

我是infinispan的新手,我正在尝试从非常基础开始。在完成与正在运行的程序相同的JVM进程中的嵌入式缓存的文档之后,我试图了解它是如何工作的。

这是我的代码。

public class CacheClient {

    public static void main(String[] args) {

        CacheClient cc = new CacheClient();
        cc.start();

    }

    public void start() {

        boolean run = true;
        EmbeddedCacheManager manager = **createCacheManagerProgrammatically**();
        manager.start();
        Cache<Object, Object> cache = manager.getCache("dist");
        Scanner sc = new Scanner(System.in);
        while (run) {
            System.out.println("Enter the command:");
            String command = sc.next();
            switch (command) {
            case "add":
                System.out.println("Enter the key:");
                int i = sc.nextInt();
                cache.put(Integer.valueOf(i), Integer.valueOf(i));
                break;

            case "list":
                System.out.println("The keys:");
                Set<Object> keySet = cache.keySet();
                Iterator<Object> iter = keySet.iterator();
                while (iter.hasNext()) {
                    System.out.println((Integer) iter.next());
                }
                break;
            default:
                run = false;
                break;
            }
        }
        sc.close();
        manager.stop();
    }

    private EmbeddedCacheManager **createCacheManagerProgrammatically**() {
        System.out
                .println("Starting a cache manager with a programmatic configuration");
        EmbeddedCacheManager cacheManager = new DefaultCacheManager(
                GlobalConfigurationBuilder
                        .defaultClusteredBuilder()
                        .transport()
                        .defaultTransport()
                        .clusterName("dist_cluster")
                        .addProperty("configurationFile",
                                "jgroups.xml")
                        .build(), new ConfigurationBuilder().clustering()
                        .cacheMode(CacheMode.REPL_SYNC).build());
        cacheManager.defineConfiguration("dist", new ConfigurationBuilder()
                .clustering().cacheMode(CacheMode.REPL_SYNC).hash()
                .numOwners(2).build());
        return cacheManager;
    }
}

从上面的代码我的期望是假设我先运行这个程序并开始使用 add 命令将整数添加到缓存中,然后当我再次运行相同的程序(另一个进程)时,那一刻我使用 list 命令,我应该立即看到内容。但是当我在第二个进程中使用list时,我无法看到任何内容。

1)嵌入式缓存应该如何工作?
我的期望是否正确?
如果是这样,那么我错过了什么?

请纠正我的错误并指出我的教程,清楚地解释它是如何工作的。我尝试从Infinispan文档中学习教程。但我认为那里不是很清楚。 任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:3)

我终于想通了。请设置 System.setProperty(&#34; java.net.preferIPv4Stack&#34;,&#34; true&#34;);

以上代码可以使用。