You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic 10下通过Java API调用sjs、xqy文件及调试方法相关问题

Java应用调用MarkLogic 10 xqy/sjs脚本的实现方法

可以实现类Oracle存储过程的调用效果,你可以把业务逻辑封装在服务端xqy/sjs脚本中,Java端只负责传参调用、获取返回结果,具体操作步骤如下:

  • 先将开发完成的xqy/sjs脚本部署到MarkLogic的*模块数据库(Modules Database)*中,也可以将脚本放在应用服务器文件系统的指定路径,再配置MarkLogic应用服务器的模块根目录指向该路径即可。
  • Java端引入MarkLogic官方的marklogic-client-api依赖,适配MarkLogic 10的稳定版本Maven配置示例如下:
<dependency>
    <groupId>com.marklogic</groupId>
    <artifactId>marklogic-client-api</artifactId>
    <version>5.5.0</version>
</dependency>
  • 初始化客户端连接后通过ServerEvaluationCall接口调用脚本,示例代码如下:
// 初始化MarkLogic客户端连接
DatabaseClient client = DatabaseClientFactory.newClient(
    "服务端IP", 端口号, "目标内容数据库名",
    new DatabaseClientFactory.DigestAuthContext("用户名", "密码")
);
// 构造脚本调用请求
ServerEvaluationCall call = client.newServerEval()
    // 替换为模块库中你的xqy/sjs脚本的实际路径
    .modulePath("/custom-scripts/calculate-data.sjs")
    // 给脚本传参,参数名和脚本中声明的外部变量名对应即可
    .addVariable("userId", 10086)
    .addVariable("dataType", "order");
// 执行调用并获取返回结果
EvalResult result = call.eval();
// 按实际业务需要转换返回结果格式,支持JSON、XML、文本等多种类型
String resultStr = result.getAs(String.class);
// 释放连接
client.release();

如果是临时测试用的不需要复用的脚本,也可以直接把xqy/sjs代码字符串传给xquery()或javascript()方法直接执行,不需要提前部署到模块库。


xqy/sjs脚本的调试方法

常用的调试方式有三种:

Query Console在线调试

这是最常用的调试方案,MarkLogic自带的Query Console默认访问地址为http://你的MarkLogic服务端IP:8000/qconsole,操作流程如下:

  • 选择脚本对应的内容数据库、模块数据库
  • 导入待调试的xqy/sjs脚本,或者直接粘贴脚本代码
  • 在需要打断点的位置插入断点语句:xqy语法为xdmp:breakpoint(),sjs语法为xdmp.breakpoint()
  • 切换到调试模式运行脚本,即可实现单步执行、查看实时变量值、查看调用栈等调试操作

日志输出调试

适合线上环境快速定位问题:

  • xqy脚本使用xdmp:log("输出内容", "debug")打印日志,可以自定义info、warn、error等日志级别
  • sjs脚本使用xdmp.log("输出内容", "debug"),用法和xqy完全一致
  • MarkLogic 10默认日志存储路径:Linux环境为/var/opt/MarkLogic/Logs/ErrorLog.txt,Windows环境为C:\Program Files\MarkLogic\Data\Logs\ErrorLog.txt

单元测试调试

复杂业务逻辑的脚本可以用MarkLogic官方的test-framework单元测试框架编写测试用例,支持自定义断言、异常捕获、批量执行测试用例,适合全量回归测试时定位逻辑问题。


内容的提问来源于stack exchange,提问作者hdew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:36:04