2

我对存在数据库中的 RESTXQ 实现有疑问。我认为可能是 RestXQTrigger 工作不正常。

.xqm问题:我(通过仪表板)删除了一个集合,其中包括几个文件中的 RESTXQ 服务。但是,这些服务并未取消注册并且仍然可用,即使在重新启动 eXist 之后也是如此。

有什么方法可以强制取消注册,我的意思是除了重新创建以前的集合/文件并逐个删除每个.xqm文件(这样,触发器似乎工作)?

4

2 回答 2

4

目前 eXist 中的 RESTXQ 只实现了 Document Trigger 事件而不是 Collection Trigger 事件。这只是一个限制,当有时间实施时需要解决。

名称空间中随 eXist 提供了一个 XQuery 模块:http://exquery.org/ns/restxq/exist. 此模块中的功能使您能够手动操作 RESTXQ 注册表。您可以在$EXIST_HOME/conf.xml. 如果您随后重新启动 eXist 并重新构建函数文档,您应该能够在函数浏览器应用程序中看到这些函数的文档。特别是您很可能需要以下功能:

exrest:deregister-module(xs:anyURI("/db/my-module.xqm"))exrest:register-module(xs:anyURI("/db/my-module.xqm"))

还有一些用于从模块注册和注销单个函数的函数,它们被调用register-resource-function,它们与上面类似,但采用第二个参数,它是qname#arityderegister-resource-function形式的函数签名(作为 xs:string),例如"fn:substring#2"

于 2014-12-22T15:11:22.343 回答
2

您可以停止数据库,并手动删除注册表文件$EXIST_HOME/webapp/WEBINF/data/restxq.registry

于 2014-12-19T16:40:52.747 回答