Java 如何在gerrit插件中使用LifecycleListener?
我正在编写gerrit插件,希望在插件重新启动/关闭时关闭网络连接。这可以使用Java 如何在gerrit插件中使用LifecycleListener?,java,guice,gerrit,Java,Guice,Gerrit,我正在编写gerrit插件,希望在插件重新启动/关闭时关闭网络连接。这可以使用LifecycleListener完成 据我所知,gerrit插件有两种关于Guice的操作模式。一种是不要在清单中声明任何内容,而是使用自动注册,使用诸如@Listen和@Export之类的注释。另一个是创建一个Guice模块,并在该模块中手动执行所有布线 我想使用自动注册,但无法使用LifecycleListener。添加@Listen注释无效,侦听器将被忽略 我的代码如下所示(最小化): 我发现Lifecycle
LifecycleListener
完成
据我所知,gerrit插件有两种关于Guice的操作模式。一种是不要在清单中声明任何内容,而是使用自动注册,使用诸如@Listen
和@Export
之类的注释。另一个是创建一个Guice模块,并在该模块中手动执行所有布线
我想使用自动注册,但无法使用LifecycleListener
。添加@Listen
注释无效,侦听器将被忽略
我的代码如下所示(最小化):
我发现
LifecycleListener
s不能与自动注册结合使用
原因如下:为了使
@Listen
注释工作,类实现的@ExtensionPoint
接口(在本例中为LifecycleListener
)必须在GUI模块中具有动态项
、动态集
或动态映射
定义,对于LifecycleListener
您是否为@Listen
注释注册了拦截器?没有,但是@Listen
注释是由gerrit定义的,用于插件@ExtensionPoint
的自动注册。您的插件加载成功吗?我尝试在提交消息长度验证插件(核心Gerrit插件)上添加一个LifecycleListener
,方法与您的示例相同,但它无法加载带有“com.google.gerrit.server.plugins.invalidPlugineException:无法注册com.googlesource.gerrit.plugins.validators.CommitMessageLengthValidation$Lifecycle,服务器不接受com.google.gerrit.extensions.events.LifecycleListener”。你说得对,它不工作。但我认为应该注册。我在gerrit问题跟踪器[1]上提出了这个问题。[1]
@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
}
}
}