java - 在 gremlin 服务器脚本文件中使用自定义库
问题描述
请问我有两个问题,可以吗?
- 我想知道如何在 gremlin 服务器脚本引擎中调用(使用)我自己的自定义编写的 java 代码?因此,例如,我认为 Stephen Mallette 编写了一些 java 函数,这些函数在 gremlin 服务器脚本文件夹中调用,这里是他的函数的链接:
然后在 Gremlin Server 脚本文件夹中,generateModern(final TinkerGraph g)
使用如下:
globals << [hook : [
onStartUp: { ctx ->
ctx.logger.info("Loading 'modern' graph data.")
org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory.generateModern(graph)
}
] as LifeCycleHook]
请问如何用我自己编写的 java 函数替换它,以使 gremlin 服务器能够理解我的 java 函数并在运行时读取它们?我需要将我的函数编译成 Jar 文件并放入 Lib 文件夹吗?
- 我通过我构建的 Java 程序而不是 Gremlin 控制台连接到 Gremlin 服务器。如何在我的 java 程序中引用和使用图形对象变量。我只能看到和使用图形遍历源对象变量(g),它在脚本文件中公开,即
globals << [g: graph.traversal()]
如何公开图形对象变量,即graph
我可以在我的 Java 程序中使用它?
非常感谢
解决方案
如果您有自己的 Java 库并希望在 Gremlin Server 中公开,只需将其打包到 jar 中并将其添加到 Gremlin Server 类路径中。您可以通过将 jar 复制到/lib
目录或通过gremlin-server.sh install
命令添加它来手动执行此操作。如果您使用后者,您可能会考虑构建GremlinPlugin
类(它是您实现的接口),这将允许您设置类导入到 Gremlin Server ScriptEngine。您可以在此处查看此类简单插件的示例。有了该 jar 文件,您就可以在脚本中访问库的类。
如何在我的 java 程序中引用和使用图形对象变量
您只能从 Java 程序访问脚本中的“图形”。字节码请求无法做到这一点。也就是说,Graph
除了生成“g”之外,您根本不应该使用该对象。不推荐其他用途,因为最佳实践是仅使用 Gremlin 访问您的图表,并且您只能使用“g”编写 Gremlin。使用“graph”肯定会限制代码的可移植性,并将您绑定到可能会更改或不被所有图表完全支持的 API。
推荐阅读
- indexing - WordDelimiterGraphFilterFactory 的 Solr 短语查询问题
- rxjs - 在 Redux Observable 中,如何在 img 加载后获取图像大小
- dart - 在 Dart 中检测动态类型
- arrays - 将一维数组重塑为网格格式
- typo3 - TYPO3 9.2.1 在 Composer 模式下创建 ViewHelper
- angular - 在 typescript [ionic angular] 中执行 resolveLocalFilesystemUrl 后无法获取文件数据
- android - 如何在gradle中声明一个变量?
- mysql - 1615 准备好的语句需要在codeigniter中重新准备
- react-native - 反应原生火力。getInitialNotification 为空
- javascript - 在javascript中切片数据并通过选择获取标题