5.5. Using the server with an embedded database

5.5.1. Providing custom configuration
5.5.2. Installing

Even if you are using the Neo4j Java API directly, for instance via EmbeddedGraphDatabase or HighlyAvailableGraphDatabase, you can still use the features the server provides.

The Neo4j server exposes a class called WrappingNeoServerBootstrapper , which is capable of starting a Neo4j server in the same process as your application. It uses an AbstractGraphDatabase instance that you provide.

This gives your application, among other things, the REST API, statistics gathering and the web administration interface that comes with the server.

Usage example. 

WrappingNeoServerBootstrapper srv = new WrappingNeoServerBootstrapper(
        myDb );

srv.start();

// Server is now running in background threads

srv.stop();

5.5.1. Providing custom configuration

You can modify the server settings programmatically and, within reason, the same settings are available to you here as those outlined in Section 5.2, “Server Configuration”.

The settings that are not available (or rather, that are ignored) are those that concern the underlying database, such as database location and database configuration path.

Custom configuration example. 

EmbeddedServerConfigurator config = new EmbeddedServerConfigurator(
        myDb );
config.configuration().setProperty(
        Configurator.WEBSERVER_PORT_PROPERTY_KEY, 7575 );

WrappingNeoServerBootstrapper srv = new WrappingNeoServerBootstrapper(
        myDb, config );

srv.start();

5.5.2. Installing

To run the server all the libraries you need are in the system/lib/ directory of the download package. For further instructions, see Section 12.1, “Include Neo4j in your project”. The only difference to the embedded setup is that system/lib/ should be added as well, not only the lib/ directory.

For users of dependency management, an example for Maven follows.

Maven pom.xml snippet. 

<dependencies>
  <dependency>
    <groupId>org.neo4j.app</groupId>
    <artifactId>neo4j-server</artifactId>
    <version>${neo4j-version}</version>
  </dependency>
</dependencies>
<repositories>
  <repository>
    <id>neo4j-release-repository</id>
    <name>Neo4j Maven 2 release repository</name>
    <url>http://m2.neo4j.org/releases</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

Where ${neo4j-version} is the intended version.