2012-02-21 41 views
16

Tôi mới sử dụng Neo4J và không thể tìm thấy câu trả lời cho câu hỏi của tôi mặc dù số giờ của tôi là googling.Cách kết nối với máy chủ neo4j được cài đặt cục bộ bằng cách sử dụng Java

Cho đến nay, tôi đã làm theo các hướng dẫn và bây giờ tôi có một sự hiểu biết cơ bản về cách/khi sử dụng Neo4j. Bây giờ, tôi sắp bắt đầu sửa đổi mã hello-world của mình và kết nối với máy chủ Neo4J được cài đặt cục bộ trên máy của tôi, có thể truy cập qua http://127.0.0.1:7474.

kết nối Gốc (sử dụng một cơ sở dữ liệu nhúng):

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

Câu hỏi đặt ra là liệu có anyway để sửa đổi dòng này để kết nối với "máy chủ" của tôi cơ sở dữ liệu trong c: \ neo4j \ data \ graph.db thay ? Máy chủ hiện đang chạy dưới dạng dịch vụ cửa sổ và tôi có thể xem cơ sở dữ liệu của máy chủ bằng công cụ quản trị web. Tại thời điểm này, tôi không quan tâm đến việc sử dụng API REST vì máy chủ và ứng dụng khách đang chạy trên cùng một máy.

Tôi cảm thấy như tôi đang thiếu điều gì đó hiển nhiên ở đây ...

Trả lời

3

Dịch vụ cửa sổ hiển thị giao diện REST.

Giao diện nhúng hoàn toàn khác - bạn trỏ nó vào cấu trúc tệp cơ sở dữ liệu và sau đó truy cập nó thông qua các cuộc gọi phương thức Java.

Nếu bạn có cả hai hoạt động cùng một lúc, chỉ vào cùng một dữ liệu, thì những điều xấu có thể xảy ra (trên thực tế, tôi nghĩ rằng nó phát hiện điều này và ngăn chặn nó). Vì vậy, bạn có thể cần phải dừng dịch vụ và/hoặc sao lưu dữ liệu từ cá thể này sang một thư mục khác. Sau đó chỉnh sửa công cụ xây dựng EmbeddedGraphDatabase của bạn để trỏ đến thư mục này.

The manual mô tả giao diện Java được nhúng, như bạn có thể đã thấy. Xem thêm this section đề cập ngắn gọn về giao diện quản lý dựa trên web khá tốt đẹp.

+0

Cảm ơn, gợi ý của bạn ngăn chặn các dịch vụ và chỉ contructor EmbeddedGrapDatabase tôi vào "máy chủ" thư mục db đã làm các trick. – PFrank

4

Tôi không thể tìm thấy bất kỳ mã mẫu nào trên trình bao bọc, vì vậy, đây là những gì tôi đã kết thúc.

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(); 

này sẽ cho phép bạn đến thăm localhost: 7474 và xem các công cụ webadmin giống như chạy máy chủ mà còn tiếp tục với mã Java thông thường của bạn (ghi API đơn giản của riêng bạn bằng cách sử dụng input stream để đọc lệnh).

1

Tôi biết một bài đăng cũ nhưng vẫn thêm câu trả lời của tôi. Bạn có thể sử dụng Neo4jConnection. Mẫu Mã

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

Bạn đã tìm thấy lớp Neo4jConnection này ở đâu? – mattdeboard

+0

có giao diện [ở đây] (http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded-setup.html) – user299791

+0

Bạn có nghĩa là tôi cần thêm toàn bộ thư viện máy chủ không? Tôi có thể sử dụng nút và mối quan hệ trong cấu hình này không? –

1

Ended sử dụng Jersey của khách hàng HttpBasicAuthFilter

thông số của bạn nên được một cái gì đó như:

  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; 
     } 

mới nhất Jersey khách hàng có thể được tìm thấy bằng cách thêm này để mvn bạn pom nếu nó vẫn chưa trong cây phụ thuộc của bạn.

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

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

Các vấn đề liên quan