2013-03-30 3 views
0

JDK 1.6 및 Heroku를 사용하여 Neo4j (1.9) 오류 및 RestApi를 도와 줄 수있는 사람이 누구입니까?RestAPI 및 Neo4j

코드의 목적은 자바로 cypher 및 Neo4j를 사용하는 기능을 데모하는 것입니다. 헤로 쿠에서만 RestAPI 만 작동한다는 것을 알고 있습니다.

package com.example; 

import java.util.List; 

import org.neo4j.graphdb.Direction; 
import org.neo4j.graphdb.GraphDatabaseService; 
import org.neo4j.graphdb.Node; 
import org.neo4j.graphdb.Relationship; 
import org.neo4j.graphdb.RelationshipType; 
import org.neo4j.graphdb.Transaction; 
import org.neo4j.graphdb.factory.GraphDatabaseFactory; 
import org.neo4j.helpers.collection.*; 
import org.neo4j.rest.graphdb.RestAPI; 
import org.neo4j.rest.graphdb.RestAPIFacade; 
import org.neo4j.rest.graphdb.RestGraphDatabase; 
import org.neo4j.rest.graphdb.query.RestCypherQueryEngine; 
import org.neo4j.rest.graphdb.util.*; 
import org.springframework.stereotype.Component; 
import java.util.Map; 


import com.example.IDatabaseConnector; 
//import org.neo4j.rest.graphdb.RestGraphDatabase; 
//import org.neo4j. 

@Component 
//public class Neo4jDatabaseConnector implements IDatabaseConnector { 
public class Neo4jDatabaseConnector implements IDatabaseConnector{ 

    Node aNode; 
    Node first; 
    Node second; 
    Relationship relation; 
    private static GraphDatabaseService GraphDb; 
    private static RestAPI restAPI; 
    Transaction txn; 

    private static enum RelTypes implements RelationshipType 
    { 
     KNOWS, 
     USAGE 
    } 

    public void showNode() 
    { 

     // have to add code for cypher 
     RestCypherQueryEngine rcqe = new RestCypherQueryEngine(restAPI); 
     //Then just execute your cypher statements using rcqe.query(). 
    // int length=0; 
     String countNodes = "START n=node(*) RETURN count(*)"; 
     String createNodes = "CREATE (n {name: 'Trevor Oakley'})"; 
     rcqe.query(createNodes, null); 


    // QueryResult <Map<String,Object>> result = rcqe.query(countNodes, null); 

     //for (Map<String, Object> row:result){ 
     // length++; 
     //} 
     //System.out.println("length="+length); 


    // rcqe.query(countNodes, Map<String, Object> row:result); 
     // rcqe.query(countNodes, Map<String,Object>:result) 
     // rcqe. 
/* ExecutionEngine engine = new ExecutionEngine(GraphDb); 
     int length=-1; 
     try{ 
      ExecutionResult result = engine.execute("start n=node(*) return n"); 
      if (result == null){ 
       length = 0; 
      } else 
      { 
       for (@SuppressWarnings("unused") 
        Map<String, Object> row:result){ 
         length++; 
        } 
      } 
     } catch (NullPointerException e) { 
     // _log.error(e.getMessage(),e); 
      length=-2; 
     } 

     System.out.println("len="+length); 
     */ 

    } 

    public Neo4jDatabaseConnector() { 
     //GraphDb=new GraphDatabaseFactory().newEmbeddedDatabase(Neo4j_DBPath); 
    } 
    public int createDBRest() 
    { 
     restAPI = new RestAPIFacade(System.getenv("NEO4J_URL"), 
        System.getenv("NEO4J_USERNAME"), 
        System.getenv("NEO4J_PASSWORD")); 
     try{ 
       GraphDb = new RestGraphDatabase(restAPI); 
     } 
      catch (Exception e){ 
        return 1; 
      } 

      return 0; 
    } 
    public int createDB(String dbLoc) { 

     System.out.println("db loc ="+dbLoc); 
     int error = 0; 
try{ 

     GraphDb=new GraphDatabaseFactory().newEmbeddedDatabase(dbLoc); 
    //GraphDb=new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(dbLoc); 
     System.out.println("db loc ="+dbLoc); 
     String stringDB = GraphDb.toString(); 
     System.out.println("connection ="+stringDB); 
} 
catch (Exception e){ 
    System.out.println("error - "); 
    error = 1; 
} 
    return erro 

r; 
    } 

Problem accessing /hello. Reason: 

     Error reading as JSON '' 
    Caused by: 

    java.lang.RuntimeException: Error reading as JSON '' 
     at org.neo4j.rest.graphdb.util.JsonHelper.readJson(JsonHelper.java:57) 
     at org.neo4j.rest.graphdb.util.JsonHelper.jsonToSingleValue(JsonHelper.java:62) 
     at org.neo4j.rest.graphdb.RequestResult.toEntity(RequestResult.java:114) 
     at org.neo4j.rest.graphdb.RequestResult.toMap(RequestResult.java:120) 
     at org.neo4j.rest.graphdb.ExecutingRestRequest.toMap(ExecutingRestRequest.java:187) 
     at org.neo4j.rest.graphdb.ExecutingRestAPI.query(ExecutingRestAPI.java:475) 
     at org.neo4j.rest.graphdb.ExecutingRestAPI.query(ExecutingRestAPI.java:495) 
     at org.neo4j.rest.graphdb.RestAPIFacade.query(RestAPIFacade.java:233) 
     at org.neo4j.rest.graphdb.query.RestCypherQueryEngine.query(RestCypherQueryEngine.java:50) 
     at com.example.Neo4jDatabaseConnector.showNode(Neo4jDatabaseConnector.java:53) 
     at com.example.HelloServlet.doGet(HelloServlet.java:22) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 
     at org.eclipse.jetty.server.Server.handle(Server.java:349) 
     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449) 
     at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:910) 
     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634) 
     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 
     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76) 
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609) 
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) 
     at java.lang.Thread.run(Thread.java:679) 
    Caused by: java.io.EOFException: No content to map to Object due to end of input 
     at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775) 
     at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718) 
     at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) 
     at org.neo4j.rest.graphdb.util.JsonHelper.readJson(JsonHelper.java:55) 
     ... 34 more 
    Caused by: 

    java.io.EOFException: No content to map to Object due to end of input 
     at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775) 
     at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718) 
     at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) 
     at org.neo4j.rest.graphdb.util.JsonHelper.readJson(JsonHelper.java:55) 
     at org.neo4j.rest.graphdb.util.JsonHelper.jsonToSingleValue(JsonHelper.java:62) 
     at org.neo4j.rest.graphdb.RequestResult.toEntity(RequestResult.java:114) 
     at org.neo4j.rest.graphdb.RequestResult.toMap(RequestResult.java:120) 
     at org.neo4j.rest.graphdb.ExecutingRestRequest.toMap(ExecutingRestRequest.java:187) 
     at org.neo4j.rest.graphdb.ExecutingRestAPI.query(ExecutingRestAPI.java:475) 
     at org.neo4j.rest.graphdb.ExecutingRestAPI.query(ExecutingRestAPI.java:495) 
     at org.neo4j.rest.graphdb.RestAPIFacade.query(RestAPIFacade.java:233) 
     at org.neo4j.rest.graphdb.query.RestCypherQueryEngine.query(RestCypherQueryEngine.java:50) 
     at com.example.Neo4jDatabaseConnector.showNode(Neo4jDatabaseConnector.java:53) 
     at com.example.HelloServlet.doGet(HelloServlet.java:22) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 
     at org.eclipse.jetty.server.Server.handle(Server.java:349) 
     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449) 
     at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:910) 
     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634) 
     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 
     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76) 
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609) 
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) 
     at java.lang.Thread.run(Thread.java:679) 
+0

코드를 정리할 수 있습니까? 현재 어떤 부분이 활발히 호출되는지, 어떤 부분이 불투명한지는 명확하지 않습니다. 일반적으로 RestAPI/RestGraphDatabase 부분은 정상적으로 보입니다. NEO4J_URL은 무엇입니까? 환경 변수가 올바르게 설정되어 있다면'heroku config'로 확인할 수 있습니까? –

+0

공개 무효 showNode() { \t \t \t \t \t restAPI = 새로운 RestAPIFacade (System.getenv ("NEO4J_URL") \t \t \t \t System.getenv ("NEO4J_USERNAME") \t \t \t \t 시스템 .getenv ("NEO4J_PASSWORD")); \t \t \t \t GraphDb = new RestGraphDatabase (restAPI); \t \t \t \t RestCypherQueryEngine rcqe = new RestCypherQueryEngine (restAPI); \t rcqe.query (createNodes, null); \t \t \t \t \t \t \t } \t \t 공개 무효 종료() { \t \t GraphDb.shutdown(); \t \t \t} } –

+0

IRON_CACHE_PROJECT_ID : XXX IRON_CACHE_TOKEN : RWR-XXX JAVA_OPTS : -Xmx384m -Xss512k -XX : + UseCompressedOops MAVEN_OPTS : -Xmx384m -Xss512k -XX : + UseCompressedOops NEO4J_URL : HTTP : // [email protected]sted.neo4j.org : 7489 경로 : /app/.jdk/bin:/usr/local/bin:/usr/bin:/bin REDISCLOUD_URL : redis : // rediscloud : xxx @ pub-redis -15110.us-east-1-2.3.ec2.garantiadata.com:15110 TREASURE_DATA_API_KEY : xxx –

답변

0

대답은 즉각적인 오류와 관련하여 아래에 표시된대로 사용자 및 암호 필드를 채우는 것이 었습니다.

String neo4jURL = System.getenv("NEO4J_URL"); 
     String user="user"; 
     String password="password"; 

     try{ 
     URL url = new URL(neo4jURL); 
     String userInfo = url.getUserInfo(); 
     String[] userDetails = userInfo.split(":"); 
     user = userDetails[0]; 
     password = userDetails[1]; 

     } catch (MalformedURLException e) { 
     // 
     }