我开始使用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,因此返回null对象。我使用heroku运行bash然后使用java -cp运行jar文件。
heroku配置: NEO4J_URL:http://xxx:xxx@e67f2f314.hosted.neo4j.org:
我在dbLoc上尝试了一些变体,它们被传递给newEmbeddedDatabase,但没有任何工作。
我很感激在Heroku上运行Java和Neo4j以运行servlet的任何链接。
答案 0 :(得分: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()
执行您的密码语句。