Ошибка при попытке доступа к базе данных Neo4j через REST для обхода через Gremlin - PullRequest
0 голосов
/ 20 сентября 2011

Я использую Gremlin над базой данных Neo4j. Я могу загрузить базу данных тинкерграфа и выполнить на ней обход gremlin, но не могу загрузить локальную базу данных и выполнить ее.

Из графика тинкера на консоли я использую следующие команды, и он отлично работает:

g = new TinkerGraph();
g.loadGraphXML('/db/data/graph-example-1.xml');
g.V.name    this works fine and getting the expected results.

Даже из Java-кода я могу это сделать. Я посылаю ту же команду как:

final String scriptURI = SERVER_ROOT_URI + "ext/GremlinPlugin/graphdb/execute_script";
WebResource resource = Client.create().resource(scriptURI);
String entity = toJsonNameValuePairCollection("script", " g = new TinkerGraph();g.loadGraphXML('/db/data/graph-example-1.xml');g.V.name");
ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).entity(entity .post(ClientResponse.class);

Но когда я пытаюсь получить доступ к данным с жесткого диска, который я создал в 'db / data /', он отлично работает в консоли, но не через код Java.

Консольные команды:

g = новый Neo4jGraph ('db / data /'); г.В.Имя

Я получаю ожидаемый результат.

Но через код Java я получаю следующую ошибку: javax.script.ScriptException: java.lang.RuntimeException: java.io.FileNotFoundException

мой код Java:

final String scriptURI = SERVER_ROOT_URI + "ext / GremlinPlugin / graphdb / execute_script"; Ресурс WebResource = Client.create (). Resource (scriptURI); String entity = toJsonNameValuePairCollection ("script", "g = new Neo4jGraph ('db / data /'); g.V.name"); ClientResponse response = resource.accept (MediaType.APPLICATION_JSON) .type (MediaType.APPLICATION_JSON) .entity (entity .post (ClientResponse.class);

1 Ответ

0 голосов
/ 22 сентября 2011

в Neo4j Server, g уже привязан к экземпляру графа Neo4j сервера, так что вы можете использовать его напрямую (пропустите g = new Neo4jGraph () в вызове REST для плагина Gremlin).

Наконец, если вам действительно нужно открыть новую базу данных, убедитесь, что «db / data /» в скрипте указывает, куда вы хотите.Это относительный путь и, следовательно, относительно серверов, работающих dir.Может быть, вы можете сначала сделать

dir = новый файл ('db / data') dir.getAbsolutePath ()

и вернуть его?

...