如何禁用/启用所有webdav服务器?

时间:2018-05-04 12:15:13

标签: marklogic

我想启用/停用所有webdav应用服务器。

2 个答案:

答案 0 :(得分:4)

您可以使用admin:group-get-webdavserver-ids()列出所有WebDAV服务器,然后使用递归函数禁用所有这些WebDav服务器,该函数使用admin:appserver-set-enabled()禁用每个WebDav服务器,指定当前的$ config, WebDAV服务器的ID和布尔fn:false(),在后续递归调用中使用返回的$config来禁用下一个WebDAV服务器,直到ID序列为空,然后在最后保存配置:

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin"
          at "/MarkLogic/admin.xqy";

declare function local:disable($config, $server-ids) {
  if (fn:empty($server-ids)) then
    admin:save-configuration($config)
  else
    let $config-new := admin:appserver-set-enabled($config, fn:head($server-ids), fn:false())
    return
      local:disable($config-new, fn:tail($server-ids))
};

let $config := admin:get-configuration()
let $webdav-ids := admin:group-get-webdavserver-ids($config, admin:group-get-id($config, "Default"))
return 
  local:disable($config, $webdav-ids)

答案 1 :(得分:2)

要小心,如果你真的禁用所有appservers,你将很难再次启用它们,因为那还包括Admin UI,QConsole,甚至管理REST api。

尽管如此,您可以将admin:appserver-set-enabled()用于此目的,另请参阅下面给出的示例。

HTH!