我对存在数据库中的 RESTXQ 实现有疑问。我认为可能是 RestXQTrigger 工作不正常。
.xqm
问题:我(通过仪表板)删除了一个集合,其中包括几个文件中的 RESTXQ 服务。但是,这些服务并未取消注册并且仍然可用,即使在重新启动 eXist 之后也是如此。
有什么方法可以强制取消注册,我的意思是除了重新创建以前的集合/文件并逐个删除每个.xqm
文件(这样,触发器似乎工作)?
我对存在数据库中的 RESTXQ 实现有疑问。我认为可能是 RestXQTrigger 工作不正常。
.xqm
问题:我(通过仪表板)删除了一个集合,其中包括几个文件中的 RESTXQ 服务。但是,这些服务并未取消注册并且仍然可用,即使在重新启动 eXist 之后也是如此。
有什么方法可以强制取消注册,我的意思是除了重新创建以前的集合/文件并逐个删除每个.xqm
文件(这样,触发器似乎工作)?
目前 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"
您可以停止数据库,并手动删除注册表文件$EXIST_HOME/webapp/WEBINF/data/restxq.registry