使用EmbeddedGraphDatabase在服务器模式下访问Neo4j?

使用EmbeddedGraphDatabase在服务器模式下访问Neo4j?,neo4j,Neo4j,如果我在服务器模式下运行neo4j,以便可以使用RESTAPI访问它,那么我可以使用EmbeddedGraphDatabase类访问同一个neo4j实例吗 我正在考虑一种生产设置,其中使用EmbeddedGraphDatabase的Java应用程序正在驱动逻辑,但其他客户端可能会在只读模式下使用REST导航数据 您所描述的是服务器插件或扩展。通过这种方式,您可以通过RESTAPI公开数据库,但同时可以从自定义插件/扩展代码访问嵌入式graph db hihgly performant 在您的自定

如果我在服务器模式下运行neo4j,以便可以使用RESTAPI访问它,那么我可以使用EmbeddedGraphDatabase类访问同一个neo4j实例吗


我正在考虑一种生产设置,其中使用EmbeddedGraphDatabase的Java应用程序正在驱动逻辑,但其他客户端可能会在只读模式下使用REST导航数据

您所描述的是服务器插件或扩展。通过这种方式,您可以通过RESTAPI公开数据库,但同时可以从自定义插件/扩展代码访问嵌入式graph db hihgly performant

在您的自定义代码中,您可以得到一个GraphDatabaseService,您可以在其上进行操作

您可以在neo4j服务器中将自定义扩展部署为JAR,并让客户端代码在面向域的restful API上运行

// extension sample
@Path( "/helloworld" )
public class HelloWorldResource {

private final GraphDatabaseService database;

public HelloWorldResource( @Context GraphDatabaseService database) {
  this.database = database;
}

@GET
@Produces( MediaType.TEXT_PLAIN )
@Path( "/{nodeId}" )
public Response hello( @PathParam( "nodeId" ) long nodeId ) {
    // Do stuff with the database
    return Response.status( Status.OK ).entity(
            ( "Hello World, nodeId=" + nodeId).getBytes() ).build();
}
}

感谢您的回答。通过查看提供的链接,我了解您的观点。但是@Context注释从何而来?回到我的问题,你不能用EmbeddedGraphDatabase打开一个正在运行的REST服务器吗?丹尼尔:你可能还想看看neo4j HA实现——使用它,你可以运行一个数据库集群,其中一个集群机器是neo4j服务器实例,另一个是应用程序中的“内部”数据库。哦,对于您刚才的评论,rest服务器有一个java客户端,它实现了与EmbeddedGraphDatabase几乎相同的API(事实上是由MichaelHunger编写的:):好的,非常感谢所有的答案!还有一个有趣的项目:)@Context来自Jersey,它是对它们的注入点的注释