如何使用Java连接到本地安装的neo4j服务器

时间:2012-02-21 22:08:23

标签: java neo4j

我是Neo4J的新手,尽管我花了几个小时的谷歌搜索,却找不到我的问题的答案。

到目前为止,我一直在关注这些教程,现在我对如何/何时使用Neo4j有了基本的了解。现在,我即将开始修改我的hello-world代码并连接到我的机器上本地安装的Neo4J服务器,可通过http://127.0.0.1:7474访问。

原始连接(使用嵌入式数据库):

GraphDatabaseService gdb = new EmbeddedGraphDatabase("c:\\helloworld\\data\\graph.db");

问题是,无论如何要修改此行以连接到c:\ neo4j \ data \ graph.db中的“服务器”数据库?服务器当前正在作为Windows服务运行,我可以使用Web管理工具查看其数据库。目前,我对使用REST API不感兴趣,因为服务器和客户端应用程序在同一台机器上运行。

我觉得我错过了一些明显的东西......

4 个答案:

答案 0 :(得分:5)

我在包装器上找不到任何示例代码,所以这就是我最终要做的事情。

EmbeddedGraphDatabase graphDb = new EmbeddedGraphDatabase("C:\\neo4j\\data\\graph.db");
WrappingNeoServerBootstrapper srv = new WrappingNeoServerBootstrapper(graphDb);
srv.start();
try {
    while (System.in.read() != 46) {
    // wait until we send a period (.) to kill the server
    }
} catch (IOException e) {}
srv.stop();

这将允许您访问localhost:7474并查看webadmin工具,就像运行服务器一样,但也继续使用您常用的Java代码(使用输入流编写您自己的简单API来读取命令)。

答案 1 :(得分:3)

Windows服务公开REST接口。

嵌入式界面完全不同 - 您将其指向数据库文件结构,然后通过Java方法调用访问它。

如果你们同时运行,指向相同的数据,那么可能会发生不好的事情(实际上,我认为它会检测到并阻止它)。因此,您可能需要停止服务和/或将此实例中的数据备份到另一个目录。然后编辑EmbeddedGraphDatabase构造函数以指向此目录。

正如您所见,

The manual描述了嵌入式Java接口。另请参阅this section,其中简要提到了相当不错的基于Web的管理界面。

答案 2 :(得分:1)

我知道它是一个旧帖子,但仍然添加我的答案。 您可以使用Neo4jConnection。 示例代码

Neo4jConnection connect=null;
connect = new Driver(). connect(DB_URL, new Properties());
ResultSet resultSet=connect.createStatement().executeQuery("YOUR QUERY")

答案 3 :(得分:1)

使用Jersey Client的HttpBasicAuthFilter

结束

您的参数应该是:

            public static final String DATABASE_ENDPOINT = "http://localhost:7474/db/data";

            public static final String DATABASE_USERNAME = "neo4j";

            public static final String DATABASE_PASSWORD = "3c0a0a6ea1sdsdsdsdsdsdsdsdf2a94d";

        private String callRest(String query) {
                final String cypherUrl = ENDPOINT + "/cypher";
                Client c = Client.create();
                c.addFilter(new HTTPBasicAuthFilter(USERNAME, PASSWORD));
                WebResource resource = c.resource(cypherUrl);
                String request = "{\"query\":\"" + query + "\"}";
                ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
                        .type(MediaType.APPLICATION_JSON).entity(request)
                        .post(ClientResponse.class);
                String object = response.getEntity(String.class);
                response.close();
                return object;
        }

最新泽西客户端可以通过将其添加到您的mvn pom中找到,如果它尚未存在于您的依赖关系树中。

            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-client</artifactId>
                <version>1.18.3</version>
            </dependency>

请参阅:https://stackoverflow.com/posts/28303766