【问题标题】:initialize java library after installing as extension in XWIki在 XWIki 中作为扩展安装后初始化 java 库
【发布时间】:2016-03-18 13:11:40
【问题描述】:

我们在 java 中为 XWiki 设计了一个监听器,并正在使用扩展管理器安装它。是否有任何代码在安装时运行?我们希望立即注册监听器,而不是等待组件的第一次实例化。

XWiki 版本是 6.4.7。

感谢任何帮助。

【问题讨论】:

    标签: java initialization listener xwiki


    【解决方案1】:

    您可以在另一个侦听器中侦听组件描述符注册事件。例如ComponentDescriptorAddedEvent

    有关更多详细信息,另请参阅http://extensions.xwiki.org/xwiki/bin/view/Extension/Component+Module#HComponentEvents

    【讨论】:

    • 所以这意味着添加另一个监听器。由于侦听器无法侦听基于 Wiki 的事件,这意味着一 (1) 个侦听器正在触发我们设计的各种自定义侦听器?听起来像一个计划 :-) 我会尽快调查。
    【解决方案2】:

    如果您的侦听器是 Java 组件(如在实现 org.xwiki.observation.EventListener 的组件中),它会立即注册。

    【讨论】:

    • 不,不是。我已经基于 EventListener 类创建了自己的监听器类,因为我需要对事件有更多的控制权并且需要确保它只监听指定的 Wiki(至少当它是从任何其他 Wiki 触发的事件时,他需要停止监听然后是他自己的。
    • 你可能在这里混合了一些东西。实现 EventListener 的组件在接收到 ComponentDescriptorAddedEvent 事件(安装组件时注册的事件)时由观察管理器自动注册。如果你让你的监听器实现 org.xwiki.component.phase.Initializable,你会看到在安装过程中调用了 initialize()。如果您想要让您的事件侦听器被“调用”而不仅仅是“注册”,那么您可以例如侦听 ExtensionInstalledEvent 或 ExtensionUpgradedEvent 事件。
    • 谢谢托马斯。这非常有帮助,我一定会实施这个建议。
    猜你喜欢
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多