MarkLogic: XQuery空返回或结果未用是否需关闭EvalResultIterator?
问题详情
- 使用MarkLogic提供的Java API执行XQuery时,通常会遇到两类业务场景:
- XQuery执行完成后不返回任何内容(即返回空序列)
- XQuery返回的结果没有后续业务流程需要消费
- 根据官方对EvalResultIterator的规范要求:
注意:EvalResultIterator必须被关闭。若调用了eval()方法,务必对返回的EvalResultIterator调用close()方法,以释放底层资源。
- 按照标准try-with-resources语法完成资源关闭时,会生成没有实际业务逻辑的空代码块,写法冗余不优雅,对应示例代码如下:
try (EvalResultIterator eval = invoker.eval()) { // 无返回结果需要处理 }
核心疑问
- 上述两类场景下,是否仍然必须关闭EvalResultIterator?
- 适配这类无需消费返回结果的场景,最优的代码实现方式是什么?
内容的提问来源于stack exchange,提问作者Alexander Holland
相关产品推荐
相关产品推荐

