java heroku_Neo4j Java Rest绑定入门(Heroku部署)

java heroku

信不信由你,最近几天是我第一次尝试使用Neo4j的Java Rest Binding 。 我先前在Heroku上的Flavorwocky应用程序使用了Grails Neo4j插件以及其他一些东西,包括工作,嵌入式Neo4j规则。

但是,嵌入式在部署到Heroku时不会起作用,因此它是Java Rest Binding。 比处理原始REST好得多,尤其是如果您非常熟悉嵌入式api。

由于花了我一小段时间来解决问题,这主要是由于我对Maven知识的可耻缺乏,所以我想发布一个简单的“入门”指南。

最后,您的应用程序和Neo4j应该互相交谈。

注意1:本文处理Neo4j 1.8.1的其余绑定,这是我的Heroku应用程序使用的版本。

注意2:如果您打算尝试将Neo4j附加组件添加到Heroku应用程序中

步骤1:获取/包含库

如果您不打算部署到Heroku和/或只想添加jar,请从此处进行选择: http : //m2.neo4j.org/content/groups/everything/org/neo4j/neo4j-rest-graphdb/1.8 .1 /

如果您喜欢/必须使用Maven,请在pom.xml中包含以下依赖项

<dependency>  
    <groupId>org.neo4j</groupId>  
    <artifactId>neo4j-rest-graphdb</artifactId>  
    <version>1.8.1</version>  
  </dependency>

在添加以下内容之前,依赖项一直无法解决:

<repositories>  
     <repository>  
       <id>mvn-neo4j</id>  
       <url>http://m2.neo4j.org/content/groups/everything</url>  
     </repository>  
 </repositories>

步骤2:连接到本地Neo4j服务器

我创建了一个简单的servlet来测试代码并弄清楚该库,您可以将此代码添加到所需的任何内容中。

RestAPI graphDb = new RestAPIFacade("http://localhost:7474/db/data");

请注意,您也可以使用

GraphDatabaseService graphDb=new RestGraphDatabase(“http://localhost:7474/db/data”);

这是我首先尝试使用的方法,它确实起作用,但是在创建RestCypherQueryEngine时似乎不是有效的参数(请参阅第3步)

步骤3:有效吗?

执行Cypher查询以返回数据库中的节点数。

QueryEngine engine=new RestCypherQueryEngine(graphDb);  
 QueryResult<Map<String,Object>> result=  
     engine.query("start n=node(*) return count(n) as total", Collections.EMPTY_MAP);  
 Iterator<Map<String, Object>> iterator=result.iterator();  
 if(iterator.hasNext()) {  
   Map<String,Object> row= iterator.next();  
   out.print("Total nodes: " + row.get("total"));  
 }

步骤4:找出答案

现在是时候启动Neo4j服务器了(如果还没有的话)。

如果您使用的是Tomcat并按照此处的指南进行操作, 构建并运行: https : //devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat

mvn package  
 sh target/bin/webapp

或者以其他方式启动您的Web应用程序。

访问servlet / jsp /其他任何内容,您应该会看到Neo4j数据库中的节点数。 一个新的数据库将返回1个节点(参考节点)

步骤5:部署到Heroku

您可以在NEO4J_URL环境变量中找到Heroku上Neo4j数据库的URL,因此您无需在应用程序中对其进行硬编码。

变量值如下所示:

http://username:password@db.hosted.neo4j.org:port

使用以下代码在应用程序代码中提取变量

String neoUrl=System.getenv("NEO4J_URL");

并解析它以提取用户名,密码和数据库URL( http://db.hosted.neo4j.org:port

修改您的代码以现在接受用户名和密码:

GraphDatabaseService graphDb=new RestGraphDatabase(dbUrl + “/db/data”,username,password);

将更改推送到heroku,访问您的应用程序,您应该会看到远程实例中的节点数。

步骤6:添加一个节点只是为了确定

Transaction tx = graphDb.beginTx();  
 Map<String,Object> props=new HashMap<String, Object>();  
 props.put("id",100);  
 props.put("name","firstNode");  
 Node node=graphDb.createNode(props);  
 tx.success();  
 tx.finish();

执行相同的Cypher查询以获取节点数,您应该看到它增加了1。

如果您迫不及待想看到绑定实际产生的REST调用,则可以打开日志记录。 根据文档,您需要将系统属性org.neo4j.rest.logging_filter设置为true。 我看到REST调用记录在Tomcat控制台上。

进一步谷歌搜索告诉我,可以通过在pom.xml的appassembler-maven-plugin中将它添加为extraJvmArgument来在Heroku上设置此属性:

<configuration>  
    <assembleDirectory>target</assembleDirectory>  
    <programs>  
      <program>  
        <mainClass>launch.Main</mainClass>  
        <name>webapp</name>  
      </program>  
    </programs>  
    <extraJvmArguments>-Dorg.neo4j.rest.logging_filter=true</extraJvmArguments>  
 </configuration>

而已! 现在,您应该能够使用Cypher或核心API来操作图形,但是在第2部分中将更详细地介绍事务和批处理。


翻译自: https://www.javacodegeeks.com/2013/07/getting-started-with-the-neo4j-java-rest-binding-heroku-deployment.html

java heroku

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值