我想启用/停用所有webdav应用服务器。
答案 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!