使用Neo4jGraph.open()或GraphFactory.open()访问Java中的远程Neo4j数据库

时间:2017-03-16 11:37:56

标签: java neo4j tinkerpop

我使用Tinkerpop的GraphFactory.open(Configuration configuration) Java命令访问Neo4j数据库。

最低工作的例子是:

Configuration configuration = new BaseConfiguration();
configuration.addProperty("gremlin.graph", "org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph");
configuration.addProperty("gremlin.neo4j.directory", "tmp/neo4j");
GraphFactory.open(configuration);

但是,我想要连接到远程Neo4j数据库。 所以我需要像

这样的东西
configuration.addProperty("gremlin.neo4j.directory", "ip:port");

导致异常:

java.lang.RuntimeException: java.io.IOException: Unable to create directory path [C:\Users\backend\192.168.56.102:7474] for Neo4j store.

似乎Neo4j尝试像文件路径一样访问ip:port ... 在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

正如您所发现的那样,这种方法无法奏效。 Neo4jGraph旨在作为嵌入式工作,因此需要数据库文件的文件系统位置,或者它可以成为HA集群中的节点,其描述为here

您的另一种选择是使用使用Bolt协议的第三方实现neo4j-gremlin-bolt。那应该做你想要的。

答案 1 :(得分:0)

感谢stephen mallette,我找到了解决方案。

从Neo4j 3.0开始,默认情况下启用Bolt协议。

所以我使用neo4j-gremlin-bolt通过Java连接到我的Neo4j远程数据库,如下所示:

Driver driver = GraphDatabase.driver("bolt://<IP>", AuthTokens.basic("user", "pass"));
Graph graph = new Neo4JGraph(driver, vertexIdProvider, edgeIdProvider));

在提供的链接上了解ID提供商。