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部分中将更详细地介绍事务和批处理。

参考:来自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

java heroku

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

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

相关文章

【JavaWeb】一文Servlet全解:继承关系、生命周期、容器和请求转发与重定向等

文章目录一、Servlet 概述二、Servlet HelloWorld三、Servlet 继承关系四、Servlet 生命周期五、ServletConfig 和 ServletContext六、请求转发与重定向七、获取请求参数一、Servlet 概述 1、Servlet名字 Servlet Server applet Server&#xff1a;服务器 applet&#xff1a;…

微机原理实验4:统计学生成绩

一、实验目的 掌握比较综合性的汇编程序设计流程&#xff0c;以及多分支情况下程序的设计技巧。 二、实验内容 设计程序统计学生数学成绩。分别归类90-99分、80-89分、70-79分、60-69分及60分以下&#xff0c;并将各段的人数及成绩存入对应的内存单元中&#xff0c;并在屏幕…

Spring Boot的Spring Data JPA示例

1.简介 在本文中&#xff0c;我们将演示如何利用功能强大的Spring Data JPA API与本课程中的数据库&#xff08;内存中的H2数据库&#xff09;进行交互。 Spring Data JPA提供了一组非常强大且高度抽象的接口&#xff0c;用于与任何基础数据库进行交互。 数据库可以是MySQL&am…

C语言实现01字符转比特流

记一个小功能的实现过程&#xff0c;程序中在循环体里使用语句 int num fwrite(&wrByte,1,i/8,pfw);代替了判断语句&#xff0c;不知道是判断每够8比特写入一次的效率高还是直接用上面的语句效率高&#xff0c;有待验证。 int main(int argc, char** argv) {FILE* pfrNU…

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】

文章目录一、为什么要写路径&#xff1f;二、为什么写路径这事有点复杂&#xff1f;三、准则四、写路径的步骤五、动态获取上下文路径一、为什么要写路径&#xff1f; 整个系统要根据功能拆分成许许多多独立的资源资源之间既要完成自身的功能又要和其他资源配合写路径就是为了从…

Windows编程初步(一)

第一节&#xff1a;安装帮助文档 使用C语言进行Windows开发&#xff0c;必然使用到WindowsSDK。Windows SDK指Windows开发人员工具包&#xff0c;是为使用C语言开发Windows程序所提供的工具集。里面提供的工具异常全面丰富&#xff0c;很少有人能全部了解&#xff0c;在开发Wi…

2022大学生免费(24元)申请个人软著专利(微信小程序)

文章目录一、发放的软著证书二、申请流程概览三、官网提交申请四、纸质材料打印五、纸质材料邮寄六、模板及代码统计工具点击查看《再易江南》微信小程序 一、发放的软著证书 挂号信封 软著证书 点击查看《再易江南》微信小程序 二、申请流程概览 一般情况下&#xff0c;按照文…

微信小程序错误 Cloud API isn‘t enabled, please call wx.cloud.init first 解决

Cloud API isnt enabled, please call wx.cloud.init first 这个错误的意思就是云环境还没有初始化就调用其它的云api了&#xff0c;因此需要先初始化&#xff0c;也就是让我们先 wx.cloud.init() 进行初始化&#xff0c;最简单的办法就是直接在最前面初始化&#xff0c;代码如…

Windows编程初步(二)

第二节&#xff1a;简单的Windows程序&#xff08;二&#xff09; 下面为这个程序增加一个菜单项&#xff1a; 首先设计用户菜单。在工作区里找到资源视图。点击Menu左边的号&#xff0c;双击出现的IDC_WIN_STEP1菜单。 图7 资源视图中的菜单 将help右边的虚框拖入左侧File菜…

kryo java_优化Java序列化– Java,XML,JSON,Kryo,POF

kryo java也许我很天真&#xff0c;但是我一直认为Java序列化肯定是将Java对象序列化为二进制形式的最快&#xff0c;最有效的方法。 毕竟Java是第7个主要发行版&#xff0c;所以这不是新技术&#xff0c;而且由于每个JDK似乎都比上一个快&#xff0c;因此我错误地认为序列化现…

Java数字分类给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3

题目描述&#xff1a; 给定一系列正整数&#xff0c;请按要求对数字进行分类&#xff0c;并输出以下5个数字&#xff1a; A1 能被5整除的数字中所有偶数的和&#xff1b; A2 将被5除后余1的数字按给出顺序进行交错求和&#xff0c;即计算n1-n2n3-n4…&#xff1b; A3 被5除后…

Windows编程之互动与动画

第五节&#xff1a; 考虑屏幕左侧一台坦克&#xff0c;向水平方向发射一枚炮弹,穿越屏幕。 很自然地&#xff0c;这场景中有坦克和炮弹两个对象&#xff0c;各自有各自坐标&#xff0c;坦克坐标是固定的&#xff0c;而炮弹坐标是变化的。因此有两个结构体类型&#xff1a;Tank…

创新设计模式:工厂模式

以前&#xff0c;我们对创建模式进行了介绍&#xff0c;并使用抽象工厂模式来创建对象族。 下一个模式是Factory模式 。 当涉及到Java时&#xff0c;工厂模式是最常用的模式之一。 那么&#xff0c;工厂模式到底是什么呢&#xff1f; 工厂模式处理创建对象而未指定确切的类或…

Java福尔摩斯的约会大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧 3485djDkxh4hhGE 2984akDfkkkkggEdsb shgsfdk dHyscvnm”。大侦探很快就明白了

题目描述&#xff1a; 大侦探福尔摩斯接到一张奇怪的字条&#xff1a;“我们约会吧&#xff01; 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了&#xff0c;字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”&#xff0c;因为前面…

Windows编程之网络之邮件槽通讯

第6节 使用邮件槽传输数据 网络通讯的理论很复杂&#xff0c;可是初学者不考虑性能的话&#xff0c;可以使用很简单的模式。一般而言网络通讯有两种模式&#xff0c;点对点模式或者广播模式。点对点模式就像一对一辅导&#xff0c;双方都能听清楚对方说什么&#xff0c;并作出…

java 批量处理 示例_Java异常处理教程(包含示例和最佳实践)

java 批量处理 示例异常是可能在程序执行期间发生的错误事件&#xff0c;它会破坏其正常流程。 Java提供了一种健壮且面向对象的方式来处理异常情况&#xff0c;称为Java异常处理 。 我们将在本教程中研究以下主题。 Java异常处理概述 异常处理关键字 异常层次 有用的异常方…

Java德才论宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之 小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若

题目描述&#xff1a; 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”&#xff1a;“是故才德全尽谓之圣人&#xff0c;才德兼亡谓之愚人&#xff0c;德胜才谓之君子&#xff0c;才胜德谓之小人。凡取人之术&#xff0c;苟不得圣人&#xff0c;君子而与之&#xff0c…

Windows编程之多媒体

一、语音接口的使用: 第一步&#xff0c;安装MSSpeech SDK。 MSSpeech SDK可从网络课堂安装&#xff0c;也可在微软公司直接下载&#xff0c;安装完毕后具有了语音处理能力。 安装过程全选默认即可。 安装完毕后&#xff0c;在开始菜单中会增加MS Speech SDK 5.1&#xff0…

Java的@Serial批注

JDK可能正在使用JDK 11 &#xff1a; Serial获得另一个标准&#xff08;预定义&#xff09;注释 。 JDK-8202385 [“标记与序列相关的字段和方法的注释”]的目的是添加“某种“ SerialRelated”注释&#xff0c;以促进对序列字段和方法的声明的自动检查。” 这种想法是为了更好…

Java部分A+B正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA

题目描述&#xff1a; 正整数A的“DA&#xff08;为1位整数&#xff09;部分”定义为由A中所有DA组成的新整数PA。例如&#xff1a;给定A 3862767&#xff0c;DA 6&#xff0c;则A的“6部分”PA是66&#xff0c;因为A中有2个6。现给定A、DA、B、DB&#xff0c;请编写程序计算…