2014-03-24 30 views
2

任何人都可以提供一些如何通過Java連接和查詢遠程neo4j服務器的示例代碼嗎?我不是在尋找一個嵌入式neo4j服務器實現。通過Java查詢遠程neo4j服務器

這裏是一個試圖得到這個工作:

import org.neo4j.cypher.javacompat.ExecutionEngine; 
import org.neo4j.cypher.javacompat.ExecutionResult; 
import org.neo4j.graphdb.GraphDatabaseService; 
import org.neo4j.rest.graphdb.RestGraphDatabase; 

public static void main(String[] args) { 
     GraphDatabaseService neo4j = new RestGraphDatabase("neo4jurl"); 
     ExecutionEngine engine = new ExecutionEngine(neo4j); 
     String myCypher = "MATCH n WHERE n.symptom = 'Xanthelasma'"; 
     ExecutionResult result = engine.execute(myCypher); 
     System.out.println(result.toString()); 
    } 

這導致了這個:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/filter/ClientFilter 
    at org.neo4j.rest.graphdb.ExecutingRestAPI.createRestRequest(ExecutingRestAPI.java:82) 
    at org.neo4j.rest.graphdb.ExecutingRestAPI.<init>(ExecutingRestAPI.java:73) 
    at org.neo4j.rest.graphdb.RestAPIFacade.<init>(RestAPIFacade.java:294) 
    at org.neo4j.rest.graphdb.RestGraphDatabase.<init>(RestGraphDatabase.java:51) 
    at mapreduce.NetworkAnalysis.main(NetworkAnalysis.java:20) 
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.filter.ClientFilter 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 5 more 

我也試圖實現這種用球衣:

String baseURI = new String("neo4jurl"); 
String payload = "db/data/node/5/relationships/all/CO_SYM"; 
Client client = ClientBuilder.newClient(); 
WebTarget target = client.target(baseURI + payload); 
System.out.println(target.getUri()); 
Invocation.Builder invocationBuilder = target.request(); 
Response response = invocationBuilder.get(); 
System.out.println(response.getStatus()); 
System.out.println(response.readEntity(String.class)); 

這不會返回來自neo4j的數據,但它是html格式的,我想利用密碼查詢語言。

+0

請發佈您的嘗試解決問題,一些研究,東西。 SO不是代碼寫入服務。 – BradleyDotNET

+0

感謝主,我已經更新了這個問題。 – bscolaro

+1

感謝您的更新。你的編輯將大大幫助下一個人看這個問題。 – BradleyDotNET

回答

2

不要這樣做!

使用

CypherQueryEngine cypher = new RestCypherQueryEngine(restGraphDB.getRestAPI()); 
cypher.query(statement, params); 

對於你的第二個例子,你的基地-URI是錯誤的。您還必須添加content-typeaccept標題爲application/json

+1

你能解釋爲什麼他不應該使用'RestGraphDatabase'嗎?因爲這是我在其他論壇上閱讀的方法。 – Pega88