2012-02-21 24 views
16

Soy nuevo en Neo4J y no pude encontrar la respuesta a mi pregunta a pesar de mis horas de búsqueda en Google.Cómo conectarme a un servidor neo4j instalado localmente usando Java

Hasta ahora, he seguido los tutoriales y ahora tengo un conocimiento básico de cómo/cuándo usar Neo4j. Ahora, estoy a punto de comenzar a modificar mi código hello-world y conectarme a un servidor Neo4J instalado localmente en mi máquina, accesible a través del http://127.0.0.1:7474.

conexión original (utilizando una base de datos integrada):

GraphDatabaseService gdb = new EmbeddedGraphDatabase("c:\\helloworld\\data\\graph.db"); 

La pregunta es ¿Hay alguna forma de modificar esta línea para conectar a mi base de datos "servidor" en c: \ Neo4j \ data \ graph.db vez ? El servidor se está ejecutando actualmente como un servicio de Windows y puedo ver su base de datos usando la herramienta de administración web. En este momento, no estoy interesado en usar la API REST ya que el servidor y la aplicación cliente se ejecutan en la misma máquina.

siento que me falta algo obvio aquí ...

Respuesta

3

el servicio Windows expone la interfaz REST.

La interfaz integrada es completamente diferente: la apunta a la estructura del archivo de la base de datos y luego accede a ella a través de llamadas al método Java.

Si ambos funcionan al mismo tiempo, apuntando a los mismos datos, entonces pueden ocurrir cosas malas (en realidad, creo que lo detecta y lo impide). Por lo tanto, probablemente deba detener el servicio y/o hacer una copia de seguridad de esta instancia en otro directorio. Luego edite su constructor EmbeddedGraphDatabase para que apunte a este directorio.

The manual describe la interfaz Java incorporada, como probablemente haya visto. Ver también this section que menciona brevemente la interfaz de administración bastante agradable basada en la web.

+0

Gracias, su sugerencia de detener el servicio y señalando mi contructor EmbeddedGrapDatabase al directorio db "servidor" hizo el truco. – PFrank

4

No pude encontrar ningún código de ejemplo en el contenedor así que esto es lo que terminé haciendo.

EmbeddedGraphDatabase graphDb = new EmbeddedGraphDatabase("C:\\neo4j\\data\\graph.db"); 
WrappingNeoServerBootstrapper srv = new WrappingNeoServerBootstrapper(graphDb); 
srv.start(); 
try { 
    while (System.in.read() != 46) { 
    // wait until we send a period (.) to kill the server 
    } 
} catch (IOException e) {} 
srv.stop(); 

Esto le permitirá visitar localhost: 7474 y ve la herramienta webadmin al igual que ejecuta el servidor, sino también continuar con su código Java habitual (escribir su propia API simple que utiliza el flujo de entrada de comandos de lectura).

1

Sé que es una publicación anterior, pero sigue agregando mi respuesta. Puede usar Neo4jConnection. Ejemplo de código

Neo4jConnection connect=null; 
connect = new Driver(). connect(DB_URL, new Properties()); 
ResultSet resultSet=connect.createStatement().executeQuery("YOUR QUERY") 
+0

¿Dónde encontraste esta clase Neo4jConnection? – mattdeboard

+0

échele un vistazo [aquí] (http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded-setup.html) – user299791

+0

¿Quiere decir que necesito agregar bibliotecas de servidores completos? ¿Puedo usar el nodo y la relación en esta configuración? –

1

terminar mediante Jersey cliente HttpBasicAuthFilter

Sus parámetros deben ser algo como:

  public static final String DATABASE_ENDPOINT = "http://localhost:7474/db/data"; 

      public static final String DATABASE_USERNAME = "neo4j"; 

      public static final String DATABASE_PASSWORD = "3c0a0a6ea1sdsdsdsdsdsdsdsdf2a94d"; 

     private String callRest(String query) { 
       final String cypherUrl = ENDPOINT + "/cypher"; 
       Client c = Client.create(); 
       c.addFilter(new HTTPBasicAuthFilter(USERNAME, PASSWORD)); 
       WebResource resource = c.resource(cypherUrl); 
       String request = "{\"query\":\"" + query + "\"}"; 
       ClientResponse response = resource.accept(MediaType.APPLICATION_JSON) 
         .type(MediaType.APPLICATION_JSON).entity(request) 
         .post(ClientResponse.class); 
       String object = response.getEntity(String.class); 
       response.close(); 
       return object; 
     } 

última versión del cliente de Jersey se puede encontrar mediante la adición de esto a su mvn pom si no está ya en tu árbol de dependencia.

  <dependency> 
       <groupId>com.sun.jersey</groupId> 
       <artifactId>jersey-client</artifactId> 
       <version>1.18.3</version> 
      </dependency> 

Ver: https://stackoverflow.com/posts/28303766

Cuestiones relacionadas