2011-05-07 9 views
7

Si ejecuto neo4j en modo de servidor para que se pueda acceder mediante la API REST, ¿puedo acceder a la misma instancia de neo4j con EmbeddedGraphDatabase-class?¿Tiene acceso a Neo4j en modo servidor con EmbeddedGraphDatabase?

Estoy pensando en una configuración de producción donde una aplicación Java que utiliza EmbeddedGraphDatabase está impulsando la lógica, pero otros clientes pueden navegar los datos con REST en modo de solo lectura.

Respuesta

7

Lo que está describiendo es un complemento o extensión del servidor. De esta manera, expone su base de datos a través de la API REST pero, al mismo tiempo, puede acceder al gráfico embebido db hihgly performant desde su plugin/código de extensión personalizado.

En su código personalizado puede obtener un GraphDatabaseService inyectado en el que opera.

Implemente sus extensiones personalizadas como jarras con su servidor neo4j y haga que el código del cliente opere sobre una API relajada orientada al dominio.

// extension sample 
@Path("/helloworld") 
public class HelloWorldResource { 

private final GraphDatabaseService database; 

public HelloWorldResource(@Context GraphDatabaseService database) { 
    this.database = database; 
} 

@GET 
@Produces(MediaType.TEXT_PLAIN) 
@Path("/{nodeId}") 
public Response hello(@PathParam("nodeId") long nodeId) { 
    // Do stuff with the database 
    return Response.status(Status.OK).entity(
      ("Hello World, nodeId=" + nodeId).getBytes()).build(); 
} 
} 

Docs para escribir y pluginsextensions.

+0

Gracias por la respuesta, al mirar a través de los enlaces provistos, veo su punto. Pero, ¿de dónde viene la @ @ context-annotation? Volviendo a mi pregunta, ¿no puede abrir un servidor REST en ejecución con EmbeddedGraphDatabase? – Daniel

+1

Daniel: Es posible que también desee ver la implementación de HA de neo4j: con eso, puede ejecutar un clúster de base de datos donde una de las máquinas de clúster es una instancia de servidor neo4j y la otra es la base de datos "interna" en su aplicación. – jakewins

+1

Ah, y para su comentario justo ahora, hay un cliente de Java para el servidor de reposo que implementa casi la misma API que EmbeddedGraphDatabase (escrita por Michael Hunger, como cuestión de hecho :)): https://github.com/ jexp/neo4j-java-rest-binding – jakewins

Cuestiones relacionadas