Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以让Java程序和Rest客户端访问Neo4J数据库_Neo4j - Fatal编程技术网

是否可以让Java程序和Rest客户端访问Neo4J数据库

是否可以让Java程序和Rest客户端访问Neo4J数据库,neo4j,Neo4j,我的理解是,如果您使用的是Java执行引擎,那么就不能同时启动允许您通过web控制台访问DB的neo4j进程。但是这个过程也促进了RESTAPI,对吗?有没有办法通过Java程序和REST API利用执行引擎?因此,据我所知,主要问题是一次只能有一个JVM进程访问数据库。因此,当您谈论RESTAPI时,您真正的意思是有一个正在运行的API。该JVM进程已锁定数据库。该服务器实例恰好在某个主机和端口上提供了RESTAPI。现在,如果您有一个正在运行的服务器实例,那么就不能单独运行一个不同的java

我的理解是,如果您使用的是Java执行引擎,那么就不能同时启动允许您通过web控制台访问DB的neo4j进程。但是这个过程也促进了RESTAPI,对吗?有没有办法通过Java程序和REST API利用执行引擎?

因此,据我所知,主要问题是一次只能有一个JVM进程访问数据库。因此,当您谈论RESTAPI时,您真正的意思是有一个正在运行的API。该JVM进程已锁定数据库。该服务器实例恰好在某个主机和端口上提供了RESTAPI。现在,如果您有一个正在运行的服务器实例,那么就不能单独运行一个不同的java进程,该进程使用

要想做你想做的事,你有两个选择:

选项1:从Java使用REST

您可以编写一个java程序。在本例中,您的第二个java程序只是对服务器进行网络调用,而不是直接接触数据库本身。所以没有冲突,你可以两者兼得

您的代码看起来会有所不同—它将更加关注于发出RESTful调用和处理生成的JSON,如下所示:

final String txUri = SERVER_ROOT_URI + "transaction/commit";
WebResource resource = Client.create().resource( txUri );

String payload = "{\"statements\" : [ {\"statement\" : \"" +query + "\"} ]}";
ClientResponse response = resource
        .accept( MediaType.APPLICATION_JSON )
        .type( MediaType.APPLICATION_JSON )
        .entity( payload )
        .post( ClientResponse.class );

System.out.println( String.format(
        "POST [%s] to [%s], status code [%d], returned data: "
                + System.getProperty( "line.separator" ) + "%s",
        payload, txUri, response.getStatus(),
        response.getEntity( String.class ) ) );

response.close();
有关更多代码示例和教程,请参见前面的链接

选项2:使用GraphDatabaseService包装器

这是包装纸。这让您可以这样做:

GraphDatabaseService gds = new RestGraphDatabase("http://localhost:7474/db/data");
然后可以像使用常规JavaAPI对象一样使用
gds
对象

这与选项1的工作原理相同——您不是直接访问数据库,而是通过包装器与RESTful服务交互