我正在编写gerrit插件,并希望在插件重新启动/关闭时关闭网络连接。可以使用LifecycleListener完成。

据我所知,涉及Guice的Gerrit插件有两种操作模式。一种是不要在清单中声明任何内容,并使用@Listen@Export这样的注释对所有内容使用自动注册。另一种是创建一个Guice模块并在该模块中手动进行所有接线。

我想使用自动注册,但是不能使它与LifecycleListener一起使用。添加@Listen注释无效,监听器将被忽略。

我的代码看起来像这样(最小化):

@Listen
@Singleton
public class CommitValidationTest implements CommitValidationListener {
        @Listen
        public static class Lifecycle implements LifecycleListener {
                @Override
                public void start() {
                    // write to log
                }

                @Override
                public void stop() {
                    // write to log
                }
        }
}

最佳答案

我认为LifecycleListener不能与自动注册结合使用。

原因如下:为了使@Listen注释起作用,由类(在本例中为@ExtensionPoint)实现的LifecycleListener接口必须在其中包含DynamicItemDynamicSetDynamicMap定义。 Guice模块,LifecycleListener并非如此。

07-24 19:36