以编程方式将全局变量添加到 gremlin 服务器
Programmatically add global variables to gremlin server
如何将全局变量添加到嵌入式 Gremlin 服务器实例?
此外,我想避免从文件加载服务器配置,尽管我可以从类路径加载资源。
看起来我们可以这样做,尽管 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();
GremlinExecutor
上的 getGlobalBindings()
确实已弃用,但 javadoc 解释了您应该如何进行:
replaced by getScriptEngineManager()
to add global scoped bindings
directly to that object.
它来自 3.2.5 javadoc,当时它最初被弃用,以准备在 3.3.0 中实现相当大的变化,当时实现了新接口以更好地概括 GremlinScriptEngine
。虽然这些新接口在 3.3.0 中被定义为默认使用,但它们实际上存在于 3.2.x 中并且可以在那里使用。请注意,getGlobalBindings()
方法实际上在 3.3.0 中已完全删除,因此当您升级时,您最终会遇到编译错误。
对于该 javadoc 注释可能存在一些混淆的地方是要使用 getScriptEngineManager()
您还必须在 3.2.x 行中使用默认的 3.3.0 yaml 配置代码...此处显示了一个示例:
https://github.com/apache/tinkerpop/blob/3.3.0/gremlin-server/conf/gremlin-server-classic.yaml#L25
请注意,在此新模型下,您还有两个其他选项来添加全局绑定...您也可以:
- 使用
BindingsGremlinPlugin
以编程方式添加全局绑定
- 编写您自己的
GremlinPlugin
实例以添加您的绑定
如何将全局变量添加到嵌入式 Gremlin 服务器实例?
此外,我想避免从文件加载服务器配置,尽管我可以从类路径加载资源。
看起来我们可以这样做,尽管 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();
GremlinExecutor
上的 getGlobalBindings()
确实已弃用,但 javadoc 解释了您应该如何进行:
replaced by
getScriptEngineManager()
to add global scoped bindings directly to that object.
它来自 3.2.5 javadoc,当时它最初被弃用,以准备在 3.3.0 中实现相当大的变化,当时实现了新接口以更好地概括 GremlinScriptEngine
。虽然这些新接口在 3.3.0 中被定义为默认使用,但它们实际上存在于 3.2.x 中并且可以在那里使用。请注意,getGlobalBindings()
方法实际上在 3.3.0 中已完全删除,因此当您升级时,您最终会遇到编译错误。
对于该 javadoc 注释可能存在一些混淆的地方是要使用 getScriptEngineManager()
您还必须在 3.2.x 行中使用默认的 3.3.0 yaml 配置代码...此处显示了一个示例:
https://github.com/apache/tinkerpop/blob/3.3.0/gremlin-server/conf/gremlin-server-classic.yaml#L25
请注意,在此新模型下,您还有两个其他选项来添加全局绑定...您也可以:
- 使用
BindingsGremlinPlugin
以编程方式添加全局绑定 - 编写您自己的
GremlinPlugin
实例以添加您的绑定