Java neo4j rest graphdb在连接到远程heroku实例时挂起

Java neo4j rest graphdb在连接到远程heroku实例时挂起,java,rest,heroku,neo4j,Java,Rest,Heroku,Neo4j,因此,我可以正确地检索远程值。我想这是由于缺少事务使用造成的。默认情况下,neo4j rest绑定将多个操作聚合到一个请求中(也称为一个事务)。有两种方法可以解决此问题: 通过设置将事务行为更改为“1操作=1事务” -Dorg.neo4j.rest.batch_transaction=false用于JVM。请注意,这可能会影响性能,因为每个原子操作都是一个单独的REST请求 在代码中使用事务: 为什么使用RestGraphDatabase而不是RestAPI?因为它使用与EmbeddedGra

因此,我可以正确地检索远程值。

我想这是由于缺少事务使用造成的。默认情况下,neo4j rest绑定将多个操作聚合到一个请求中(也称为一个事务)。有两种方法可以解决此问题:

  • 通过设置将事务行为更改为“1操作=1事务”
    -Dorg.neo4j.rest.batch_transaction=false
    用于JVM。请注意,这可能会影响性能,因为每个原子操作都是一个单独的REST请求
  • 在代码中使用事务:

  • 为什么使用RestGraphDatabase而不是RestAPI?因为它使用与EmbeddedGraphDatabase相同的API。因此,您可以在运行Neo4j embedded或作为服务器运行时使用相同的代码(除了初始化[embedded | Rest]GraphDatabase。该版本的Java Rest绑定中有一个bug,它启动内部线程而不是守护进程线程。我也有同样的问题。上面的选项对我不起作用,我正试图根据Michael的评论了解bug的位置。哪个jar/版本有bug?1.neo4j Rest绑定和neo4j Rest graphdb和Java-r一样吗est binding?2.OP正在使用neo4j rest binding的1.9版本,但我在github站点或maven上找不到该版本或任何版本。3.maven将1.8.1版本作为neo4j rest graphdb的最新版本,这就是我在处理上述问题时使用的版本。回答我自己的问题:这个错误在neo4j-rest-graphdb.jar中。github有1.9版本,显然不可用1.9代码的更改看起来可以解决这个问题,但显然不是按照OP。
    public class Test  
    {  
           private static RestAPI rest = new RestAPIFacade("myIp","username","password");  
           public static void main(String[] args)
           {
                  Map<String, Object> foo = new HashMap<String, Object>();
              foo.put("Test key", "testing");
                  rest.createNode(foo);  
           }
    }  
    
     public class Test  
        {  
               private static RestAPI rest = new RestAPIFacade("myIp","username","password");  
               public static void main(String[] args)
               {
                            Node node = rest.getNodeById(1);
               }
        }  
    
    RestGraphDatabse db = new RestGraphDatabase("http://localhost:7474/db/data",username,password);
    Transaction tx = db.beginTx();
    try {
        Node node = db.createNode();
        node.setPropery("key", "value");
        tx.success();
    } finally {
        tx.finish();
    }