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部分中將進一步介紹事務和批處理。
翻譯自: https://www.javacodegeeks.com/2013/07/getting-started-with-the-neo4j-java-rest-binding-heroku-deployment.html
總結
以上是生活随笔為你收集整理的Neo4j Java Rest绑定入门(Heroku部署)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (Linux 的ftp用户)
- 下一篇: 创维安卓系统升级(创维安卓系统)