0
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);  
       }
}  

出力はなく、接続が無期限にハングします。

環境:
Eclipse JDK 7
neo4j-rest-binding 1.9: https://github.com/neo4j/java-rest-binding
Heroku

なぜこれがハングアップするのかについてのアイデアはありますか?

次のコードが機能します。

 public class Test  
    {  
           private static RestAPI rest = new RestAPIFacade("myIp","username","password");  
           public static void main(String[] args)
           {
                        Node node = rest.getNodeById(1);
           }
    }  

つまり、リモート値を正しく取得できるということです。

4

1 に答える 1

1

これは、トランザクションの使用が不足していることが原因だと思います。デフォルトでは、neo4j-rest-binding は複数の操作を 1 つのリクエスト (別名 1 つのトランザクション) に集約します。これに対処するには、次の 2 つの方法があります。

  1. -Dorg.neo4j.rest.batch_transaction=falseJVMを設定して、トランザクションの動作を「1 操作 = 1 トランザクション」に変更 します。すべてのアトミック操作は個別の REST 要求であるため、これはパフォーマンスに影響を与える可能性があることに注意してください。
  2. コードでトランザクションを使用します。

.

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();
}
于 2013-02-17T18:48:31.823 に答える