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

ML-9定时任务执行Roxy部署代码遇XDMP-NOEXECUTE错误求助

解决MarkLogic定时任务执行Roxy部署代码时的XDMP-NOEXECUTE错误

这个错误通常是因为定时任务的运行上下文和你直接访问应用服务器的上下文不匹配导致的,下面是几个你需要检查的关键点:

  • 指定定时任务使用你的应用服务器,而非默认任务服务器
    MarkLogic的定时任务默认会跑在Task Server上,但Task Server和你的Roxy应用服务器的配置完全不同——它不会加载应用服务器的模块根目录,对可执行文档的MIME类型校验也更严格。你需要在定时任务的设置里找到server选项,把它改成你Roxy部署时创建的那个应用服务器名称,这样任务就会在正确的上下文里执行你的模块。

  • 确认模块文档的MIME类型正确
    虽然Roxy通常会帮你设置好XQuery模块的MIME类型,但偶尔会有部署异常导致类型不对。你可以登录管理界面,找到/marklogic.rest.resource/monitoring/assets/resource.xqy这个文档,查看它的content-type是否是application/xquery。如果不是,用这段XQuery来修正:

    xdmp:document-set-metadata(
      "/marklogic.rest.resource/monitoring/assets/resource.xqy", 
      xdmp:metadata-set(
        xdmp:metadata-get("/marklogic.rest.resource/monitoring/assets/resource.xqy"), 
        "content-type", "application/xquery"
      )
    )
    
  • 检查定时任务运行用户的权限
    定时任务默认用admin用户执行,但如果你自定义了任务用户,要确保这个用户对目标模块有execute权限。去管理界面的权限设置里,找到该模块的权限列表,给任务运行用户添加execute权限。

  • 建议:不要直接调用REST资源路径
    /marklogic.rest.resource/...是MarkLogic REST API内部的路径,定时任务直接调用它其实不太规范。更好的做法是把你的核心业务逻辑提取到单独的模块(比如放到/modules/monitoring/assets-core.xqy),然后让定时任务调用这个独立模块,同时REST资源的resource.xqy也可以引用这个核心模块。这样既避免了上下文冲突,也让代码结构更清晰。

  • 验证定时任务的数据库配置
    最后确认一下定时任务关联的数据库和你的应用服务器是否一致。如果数据库不同,模块可能根本不存在于任务的数据库中,自然会报错。检查定时任务的database参数,确保和应用服务器绑定的数据库相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:41:10