在subwiki中注册基于java的侦听器';XWiki的s
我们正在开发一个wiki服务器场,其中包含用于各种客户端的各种类似子wiki。我真正面临的挑战是,我希望为每个子Wiki注册不同的(基于java的)侦听器。此类侦听器的一个示例是侦听save事件以更改Wikipage的titel。为此,我使用存储在对象中的模型数据,每个子Wiki的对象可能不同。为了避免每次触发事件时都必须重新加载这些模型,我希望该模型加载一次并重新使用。然而,我已经搜索了过去几天的,以找到在每个wiki的基础上定义/注册等侦听器组件的方法,但我找不到我要找的内容 有人能帮我理解如何以这种方式构建这些侦听器吗(例如)请将我引向一个示例在subwiki中注册基于java的侦听器';XWiki的s,java,components,listener,xwiki,Java,Components,Listener,Xwiki,我们正在开发一个wiki服务器场,其中包含用于各种客户端的各种类似子wiki。我真正面临的挑战是,我希望为每个子Wiki注册不同的(基于java的)侦听器。此类侦听器的一个示例是侦听save事件以更改Wikipage的titel。为此,我使用存储在对象中的模型数据,每个子Wiki的对象可能不同。为了避免每次触发事件时都必须重新加载这些模型,我希望该模型加载一次并重新使用。然而,我已经搜索了过去几天的,以找到在每个wiki的基础上定义/注册等侦听器组件的方法,但我找不到我要找的内容 有人能帮我理解
非常感谢您的帮助:-)根据您的需要,您可能至少有两种主要解决方案:
编辑:如注释中所述,当前不支持选项2。有关更多详细信息,请参阅。加载模型数据是否效率低下?通常,XWiki中的hibernate缓存应该提供合理的性能。(我不知道是否登记到SuiWiki的侦听器是可能的,我猜它不起作用,因此试图解决问题…如果性能是一个问题,你可以使用一个地图WikMAME->数据并在那里存储你的数据。)如果我们不能在SubWiki基础上注册侦听器,那就是我们所考虑的。谢谢你的建议。在1之后,我们转到了2.1,因为我们喜欢靠近XWiki系统(我们有自己的回购协议)。但是,当我在第二个子wiki上安装侦听器时(在第一个子wiki上安装之后),我会收到已在同一ID下安装的消息(在本例中为SaveListener)。这让我考虑使用选项2.2。但我不确定这是否明智之举,因为它看起来确实相当复杂。因此,根据你的评估,我想2.1是最好的选择。但是:我不知道如何以只在subwiki上注册的方式安装侦听器。你是对的,2.1当前不受支持。它已经存在一个问题。请参考,作为一个组件,您的侦听器基本上是在wiki级别注册的,但作为一个侦听器,它是在根级别注册的,
ObservationManager
存在,因此会污染根级别的侦听器。您可以尝试解决方法(使用不同的/生成的侦听器名称),但我不确定这是否值得。我目前为每个子Wiki注册了不同的侦听器,并使用基于子Wiki的名称。这意味着在X subwiki所在的服务器场中,将有X个侦听器响应保存(在我的例子中)。通过检查子维基,我可以过滤调用。在我看来,文档实际上只保存了一次(基于版本历史记录)。现在,这对我们来说是可行的:运行4个侦听器需要相同的毫秒,我们不希望有1000个subwiki在运行。我必须看看什么是可行的,特别是因为我有一个具有相同要求的删除侦听器。很高兴听到你找到了一个可接受的解决方案。你会考虑这个问题吗?如果是,请相应地标记。谢谢