Программно добавить глобальные переменные на сервер Gremlin

Как добавить глобальные переменные во встроенный экземпляр сервера Gremlin?

Кроме того, я хочу избежать загрузки конфигурации сервера из файла, хотя я могу загружать ресурсы из пути к классам.


person Jeremy    schedule 10.02.2018    source источник


Ответы (2)


getGlobalBindings() на GremlinExecutor действительно устарела, но javadoc объясняет, как вам следует действовать:

заменен на getScriptEngineManager(), чтобы добавить глобальные привязки непосредственно к этому объекту.

Это происходит из javadoc 3.2.5, когда он изначально был объявлен устаревшим в рамках подготовки к довольно большим изменениям в 3.3.0, когда были реализованы новые интерфейсы для лучшего обобщения GremlinScriptEngine. Хотя эти новые интерфейсы были определены для использования по умолчанию в версии 3.3.0, они фактически присутствуют в версии 3.2.x и могут использоваться там. Обратите внимание, что метод getGlobalBindings() был фактически полностью удален в версии 3.3.0, поэтому при обновлении вы получите ошибки компиляции.

Где может быть некоторая путаница в отношении этого комментария javadoc, так это то, что для использования getScriptEngineManager() вы также должны использовать конфигурацию yaml 3.3.0 по умолчанию в строке кода 3.2.x... пример показан здесь:

https://github.com/apache/tinkerpop/blob/3.3.0/gremlin-server/conf/gremlin-server-classic.yaml#L25

Обратите внимание, что в этой новой модели у вас есть два других варианта добавления глобальных привязок... вы также можете:

  1. Используйте BindingsGremlinPlugin для программного добавления глобальных привязок
  2. Напишите свой собственный экземпляр GremlinPlugin, чтобы добавить свои привязки
person stephen mallette    schedule 12.02.2018

Похоже, мы можем сделать это таким образом, хотя getGlobalBindings() устарел.

    Graph graph = this.createGraph();
    GraphTraversalSource g = graph.traversal();

    this.server = new GremlinServer(getSettings());
    this.server.getServerGremlinExecutor().getGraphManager().putGraph("graph", graph);
    this.server.getServerGremlinExecutor().getGremlinExecutor().getGlobalBindings().put("graph", graph);
    this.server.getServerGremlinExecutor().getGremlinExecutor().getGlobalBindings().put("g", g);

    this.server.start();
person Jeremy    schedule 11.02.2018