0

我开始使用 Heroku 和 Neo4j。我有一个 servlet,它在本地运行以插入一些节点并在它们之间创建关系。当我在 Heroku 使用相同的代码时,我没有收到任何错误,但什么也没发生。

我尝试在 Neo4j 上使用 webadmin 手动插入节点,然后在代码中读回它,它再次在本地工作,但在 Heroku 没有任何反应。再次没有错误消息。

这是代码:

String dbPATH = System.getenv("NEO4J_URL")+"/db/data";
String dbName = "/mnt/e67f2f314/data/graph.db";
String dbLoc = dbPATH+dbName;
GraphDb=new GraphDatabaseFactory().newEmbeddedDatabase(dbLoc);

然后我使用:

ExecutionEngine engine = new ExecutionEngine(GraphDb);
int length=-1;
try{
    ExecutionResult result = engine.execute("start n=node(*) return n");
    if (result == null){
        length = 0;
    } else
    {
        for (@SuppressWarnings("unused")
            Map<String, Object> row:result){
                length++;   
            }
    }
} catch (NullPointerException e) {
//  _log.error(e.getMessage(),e);
    length=-2;
}

长度为 0,因此返回一个空对象。我使用 heroku run bash 然后 java -cp 来运行 jar 文件。

heroku 配置:NEO4J_URL: http://xxx:xxx@e67f2f314.hosted.neo4j.org

我在传递给 newEmbeddedDatabase 的 dbLoc 上尝试了一些变体,但没有任何效果。

我将不胜感激有关在 Heroku 上实现 Java 和 Neo4j 以运行 servlet 的任何链接。

4

1 回答 1

0

Heroku 上的 Neo4j 只能通过 REST 访问,因此您不能使用嵌入式。因此,您需要修改应用程序的以下依赖项:

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-rest-graphdb</artifactId>
    <version>[your version]</version>
</dependency>

初始化如下:

RestAPI restAPI = new RestAPIFacade(System.getenv("NEO4J_URL"), 
   System.getenv("NEO4J_USERNAME"), 
   System.getenv("NEO4J_PASSWORD"));
GraphDatabaseService gds = new RestGraphDatabase(restAPI);
RestCypherQueryEngine rcqe = RestCypherQueryEngine(restAPI);

然后只需使用rcqe.query().

于 2013-03-24T10:10:41.427 回答