Neo4j Java Rest绑定入门(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部分中将进一步介绍事务和批处理。

参考:来自Thought Bytes博客的JCG合作伙伴 Luanne Misquitta 的Neo4j Java Rest Binding(Heroku部署)入门 。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端性能优化规则

规则1-------减少HTTP请求 规则2-------使用内容发布网络 规则3-------添加Expires头控制缓存 规则4-------压缩组件 规则5-------将样式表放在顶部 规则6-------将脚步放在底部 规则7-------避免css表达式 规则8-------使用外部javaScript和CSS 规则9-------减少DNS查找 规则1…

uvm 形式验证_这究竟属于下一代验证的方法、语言还是工具?||路科验证

来源&#xff1a;内容由 公众号 路科验证 &#xff08;ID&#xff1a;Rocker-IC&#xff09;编辑部 原创&#xff0c;谢谢&#xff01;首先声明&#xff0c;便携式激励标准(PortableStimulus Standard, PSS)不是一种方法论&#xff0c;而是一种语言。使用语言我们可以有序地传递…

解读浮动闭合最佳方案:clearfix

之前给大家介绍两种浮动闭合的办法 &#xff0c;得知很多同学都在使用下面的骨灰级解决办法&#xff1a; .clear{clear:both;height:0;overflow:hidden;} 上诉办法是在需要清除浮动的地方加个div.clear或者br.clear&#xff0c;我们知道这样能解决基本清浮动问题。 但是这种…

redis 版的 hello world

为 redis 添加一个命令&#xff0c;效果如下图&#xff1a; 在 Server.h 中加入命令处理函数的声明&#xff1a; void meCommand(client *c); 在 Server.c 的命令表中加入&#xff1a; struct redisCommand redisCommandTable[] {{"me",meCommand,1,"rF",…

android commit apply,关于SharedPreference的commit和apply和ANR

看的SharedPreferencesImpl.java 办法呢 有人是不用apply直接自己异步commit. 也有人用反射把那个QueuedWork的sFinishers变量弄成empty.文档上说的commit和apply, Unlike commit,which writes its preference out to persistent storage synchronously, apply commits its cha…

从Datomic出发,革命性的非NoSQL数据库

我终于设法了解了当今最不寻常的数据库之一&#xff0c;Datomic&#xff0c;并希望与您分享。 感谢Stuart Halloway和他的工作室&#xff01; 为什么&#xff1f;&#xff01;&#xff1f; 我们将很快看到&#xff0c;Datomic与传统的RDBMS数据库以及各种NoSQL数据库有很大的不…

unity中单位是米还是厘米_401场地清理是什么,由施工单位做还是甲方做?造价中如何体现?...

场地清理是对公路用地范围及借土场范围内施工场地的清理、拆除和挖掘&#xff0c;以及必要的平整场地等有关作业。一、工作内容根据路基工程项目分表可以看出场地清理主要包括三方面内容&#xff1a;1、清理与拆除(1)清除表土路基范围内的树根、腐殖土、草皮或地表土不符合路基…

432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded

432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded 最近几天Hub-Mailbox服务器时不时就CPU超过90%。在任务管理器里面看到edgetransport占用大量CPU。进入EMC的队列查看器&#xff0c;看到邮箱数据库堵塞&#xff0c;队列上万。 堵塞的邮件大多是收件人自动回复、退…

SQL Server 关于列的权限控制

SQL Server 关于列的权限控制 原文:SQL Server 关于列的权限控制在SQL SERVER中列权限&#xff08;Column Permissions&#xff09;其实真没有什么好说的&#xff0c;但是好多人对这个都不甚了解&#xff0c;已经被人问了几次了&#xff0c;所以还是在这里介绍一下&#xff0c;…

简单的Spring Memcached – Spring缓存抽象和Memcached

在任何读取繁重的数据库应用程序中&#xff0c;缓存仍然是最基本的性能增强机制之一。 Spring 3.1发行版提供了一个很酷的新功能&#xff0c;称为Cache Abstraction 。 Spring Cache Abstraction为应用程序开发人员提供了一种简单&#xff0c;透明和分离的方式来实现任何缓存解…

华为鸿蒙系统是否上线,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...

原标题&#xff1a;华为官方&#xff1a;鸿蒙系统2.0上线&#xff0c;手机能否搭载鸿蒙操作系统&#xff1f;华为官宣鸿蒙已经过去有一年多的时间了。近日有消息称&#xff0c;在今年九月份华为即将举办开发者大会&#xff0c;届时正式发布鸿蒙2.0操作系统&#xff0c;相比之前…

图解 继电器模组接线图_交流接触器,继电器的知识你了解多少?(值得收藏)...

↑↑↑↑↑领取福利的小伙伴&#xff0c;先点击上方关注我们哦(文章字体较小&#xff0c;请点击放大后查看)交流接触器(Alternating Current Contactor)广泛用作电力的开断和控制电路。型号与参数交流接触器的型号很多&#xff0c; CJ0、CJ10系列交流接触器较为常用&#xff0c…

python - 数据类型

python - 数据类型&#xff1a; 基本类型&#xff1a; 1.数字 整数int 长整型long 浮点型float 2.字符串 文本str 字节bytes 3.布尔 true false数据集&#xff1a; 1.列表list 2.元祖tuple (数组) 3.字典dict 有序字典 无序字典 4.集合set 有序集合 无序集合-----------------…

CSS :root 测试

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> <style> :root {background:blue;--vvv:60px; } </style> </head> <body><h1 style" font-siz…

折线图表android,Android 折线图表MPAndroidChart的实现

昨日夜观天象&#xff0c;今日忽见北斗星陨落&#xff0c;《Android 折线图表》应运而生。single.pngmany.png一.本篇采用MPAndroidChart&#xff0c;大体实现步骤可分为两步&#xff1a;1.配置基本属性(包括X,Y轴)2.设置折线数据并添加复制代码二. 第一步&#xff0c;配置基本…

发个自己的CSS重置基础代码

关于css的重置代码有很多&#xff0c;也有不少人写过适合不同站点的重置代码&#xff0c;这里发个浩子平时使用的额方法。 代码如下&#xff1a; /* haozi / hao.chenqq.com / 2011.06.15 */body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,inp…

我最喜欢的Java高级开发人员书籍

我上一篇博客文章 &#xff08;我对高级Java开发人员的十个最喜欢的在线资源&#xff09;的想法是由Xiaoran Wang发表的针对高级Java开发人员的十大网站的启发。 Wang还写了一篇名为《面向Java高级开发人员的十大书籍》的文章。 正如关于高级Java开发人员的最佳网站上的帖子一样…

pyplot绘制图片_matplotlib系列之pyplot

pyplot对象包含了一系列用于绘图的函数&#xff0c;使得它工作起来就像MATLIB一样。它的功能例如&#xff1a;创建一个figure对象绘制一片绘图区域在区域中绘制线条或者点也可以绘制labels使用pyplot对象快速的生成一幅图片import matplotlib.pyplot as pltplt.subplot(121)plt…

字符串-----KMP竟然是18禁

今天学了一下午字符串&#xff0c;讲到结束也没讲KMP。有人问老师为什么不讲&#xff0c;老师来一句&#xff1a;字符串noip不考&#xff0c;而且还是18禁&#xff0c;自然不讲。【手动滑稽】 所以我也不讲。【微笑】 1.表达式树 表示35*8 最后计算的符号是根节点&#xff0c;是…

freopen()函数在ACM中的使用

#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endif https://blog.csdn.net/cfzjxz/article/details/7240165转载于:https://www.cnblogs.com/LLbinGG/p/9414366.html