Как добавить глобальные переменные во встроенный экземпляр сервера Gremlin?
Кроме того, я хочу избежать загрузки конфигурации сервера из файла, хотя я могу загружать ресурсы из пути к классам.
Как добавить глобальные переменные во встроенный экземпляр сервера Gremlin?
Кроме того, я хочу избежать загрузки конфигурации сервера из файла, хотя я могу загружать ресурсы из пути к классам.
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
Обратите внимание, что в этой новой модели у вас есть два других варианта добавления глобальных привязок... вы также можете:
BindingsGremlinPlugin
для программного добавления глобальных привязокGremlinPlugin
, чтобы добавить свои привязкиПохоже, мы можем сделать это таким образом, хотя 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();