我是Neo4J的新手,尽管我花了几个小时的谷歌搜索,却找不到我的问题的答案。
到目前为止,我一直在关注这些教程,现在我对如何/何时使用Neo4j有了基本的了解。现在,我即将开始修改我的hello-world代码并连接到我的机器上本地安装的Neo4J服务器,可通过http://127.0.0.1:7474访问。
原始连接(使用嵌入式数据库):
GraphDatabaseService gdb = new EmbeddedGraphDatabase("c:\\helloworld\\data\\graph.db");
问题是,无论如何要修改此行以连接到c:\ neo4j \ data \ graph.db中的“服务器”数据库?服务器当前正在作为Windows服务运行,我可以使用Web管理工具查看其数据库。目前,我对使用REST API不感兴趣,因为服务器和客户端应用程序在同一台机器上运行。
我觉得我错过了一些明显的东西......
答案 0 :(得分:5)
我在包装器上找不到任何示例代码,所以这就是我最终要做的事情。
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();
这将允许您访问localhost:7474并查看webadmin工具,就像运行服务器一样,但也继续使用您常用的Java代码(使用输入流编写您自己的简单API来读取命令)。
答案 1 :(得分:3)
Windows服务公开REST接口。
嵌入式界面完全不同 - 您将其指向数据库文件结构,然后通过Java方法调用访问它。
如果你们同时运行,指向相同的数据,那么可能会发生不好的事情(实际上,我认为它会检测到并阻止它)。因此,您可能需要停止服务和/或将此实例中的数据备份到另一个目录。然后编辑EmbeddedGraphDatabase
构造函数以指向此目录。
The manual描述了嵌入式Java接口。另请参阅this section,其中简要提到了相当不错的基于Web的管理界面。
答案 2 :(得分:1)
我知道它是一个旧帖子,但仍然添加我的答案。 您可以使用Neo4jConnection。 示例代码
Neo4jConnection connect=null;
connect = new Driver(). connect(DB_URL, new Properties());
ResultSet resultSet=connect.createStatement().executeQuery("YOUR QUERY")
答案 3 :(得分:1)
使用Jersey Client的HttpBasicAuthFilter
结束您的参数应该是:
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;
}
最新泽西客户端可以通过将其添加到您的mvn pom中找到,如果它尚未存在于您的依赖关系树中。
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.3</version>
</dependency>