存在-db restxq 触发器:服务已删除但仍处于活动状态

Posted

技术标签:

【中文标题】存在-db restxq 触发器:服务已删除但仍处于活动状态【英文标题】:exist-db restxq trigger : Services deleted but still active 【发布时间】:2015-02-18 14:45:55 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

目前 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-functionderegister-resource-function,它们与上面类似,但采用第二个参数,即函数签名(作为 xs:string) qname#arity 的形式,例如"fn:substring#2"

【讨论】:

感谢您的精确!这个文档很受欢迎 :-) 这样,我在我们的生产平台中使用 RESTXQ 感觉更舒服。再次感谢。 除了 eXist O'Reilly 的书外,RESTXQ 的文档非常缺乏,下一个最好的来源可能是adamretter.org.uk/presentations.xml#xmlprague12。但是,eXist 是一个开源项目,我欢迎一个为 RESTXQ 添加一些文档的拉取请求,请参阅:github.com/exist-db/documentation【参考方案2】:

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

【讨论】:

我找这个很久了!!!谢谢 !!在文档中的任何地方都找不到这个,是吗? 它已记录在案,但我不得不深入挖掘。 google.nl/… 表明它至少在 AdamR 和 ErikS 刚刚发布的“eXist”一书中被提及 不,eXist-db 文档中似乎没有记录,抱歉。 好的。我已经买了亚当的书:-D,但还没有。我还有一个问题,你认为 RestXQ 是完全可操作的还是仍处于 beta 模式?因为我们正在考虑在生产模式下使用它。 我会说它值得生产。它已经过很好的测试,并且得到了积极的维护。

以上是关于存在-db restxq 触发器:服务已删除但仍处于活动状态的主要内容,如果未能解决你的问题,请参考以下文章

XForms 和 restxq 应用程序

Apollo 服务器 + Lambda + 订阅

xxx 的副本已从模块树中删除,但仍处于活动状态

用户测试中多个客户端的 Symfony 4.4 弃用警告已弃用,但仍存在于文档中

20180927 SQL server ProcedureT-SQL创建前删除已存在存储过程

用户不会从 Liferay DB 中删除