Marklogic 使用 java API 执行 Xquery 代码
Marklogic excute Xquery code using java API
有没有办法使用 marklogic java api.. 执行 xquery 代码。基本上我想获取给定文件的大小,在 xquery 中我可以执行以下操作
return xdmp:binary-size(fn:doc($uri)/binary())
有没有简单的方法可以使用 Java API 来做到这一点?或者我们可以使用 java API 执行随机 xquery 代码吗?
是的,您有 ServerEvaluationCall 可以同时启用 eval 和 invoke。但是,它们需要特殊权限。 Eval 特别危险,因为当您从可能包含注入攻击的客户端发送 ad-hoc 代码时,它会带来安全风险。
相反,我们建议您安装和使用自定义 resource extension。
您可能正在寻找这个:
在服务器上执行 ad-hoc 代码 - 数据自动映射 to/from MarkLogic。
https://docs.marklogic.com/guide/java/resourceservices#id_47102
试驾一下 - 看起来很适合您的需求。
您还拥有强大的资源服务扩展选项:
https://docs.marklogic.com/guide/java/resourceservices#id_27702
我最喜欢的是:
https://docs.marklogic.com/guide/java/resourceservices#id_84134
使用注入变量在 MarkLogic 上执行完整模块 - 数据自动映射 to/from MarkLogic
我们使用这个选项如下:
- 我们在 Java 中有一个包装函数。
- 它在 MarkLogic 中执行一个主模块,它也是一个包装函数
- markLogic 函数是任何其他模块的奇特调用程序。
因此,在 java 层上调用 exec("a.b.c") 实际上会执行 MarkLogic 服务器上目录 A 中的模块 B 中的函数 C - 但结果在调用 java 代码中无缝可用.
它在现实生活中有点复杂(包括安全性和 per/post 执行审计),但肯定是一种可以帮助您控制 xQuery/JS 代码并且不允许注入的模式任意代码执行(因为您只执行连接用户有权使用的功能)。
有没有办法使用 marklogic java api.. 执行 xquery 代码。基本上我想获取给定文件的大小,在 xquery 中我可以执行以下操作
return xdmp:binary-size(fn:doc($uri)/binary())
有没有简单的方法可以使用 Java API 来做到这一点?或者我们可以使用 java API 执行随机 xquery 代码吗?
是的,您有 ServerEvaluationCall 可以同时启用 eval 和 invoke。但是,它们需要特殊权限。 Eval 特别危险,因为当您从可能包含注入攻击的客户端发送 ad-hoc 代码时,它会带来安全风险。
相反,我们建议您安装和使用自定义 resource extension。
您可能正在寻找这个: 在服务器上执行 ad-hoc 代码 - 数据自动映射 to/from MarkLogic。 https://docs.marklogic.com/guide/java/resourceservices#id_47102
试驾一下 - 看起来很适合您的需求。
您还拥有强大的资源服务扩展选项: https://docs.marklogic.com/guide/java/resourceservices#id_27702
我最喜欢的是: https://docs.marklogic.com/guide/java/resourceservices#id_84134 使用注入变量在 MarkLogic 上执行完整模块 - 数据自动映射 to/from MarkLogic
我们使用这个选项如下:
- 我们在 Java 中有一个包装函数。
- 它在 MarkLogic 中执行一个主模块,它也是一个包装函数
- markLogic 函数是任何其他模块的奇特调用程序。 因此,在 java 层上调用 exec("a.b.c") 实际上会执行 MarkLogic 服务器上目录 A 中的模块 B 中的函数 C - 但结果在调用 java 代码中无缝可用.
它在现实生活中有点复杂(包括安全性和 per/post 执行审计),但肯定是一种可以帮助您控制 xQuery/JS 代码并且不允许注入的模式任意代码执行(因为您只执行连接用户有权使用的功能)。