如何解决Jetty 10 中的 addLifeCycleListener 发生了什么?
我们曾经有一些代码可以在我们的 jetty 嵌入式服务器启动时引导 Google Guice。
// add a lifecycle listener to bootstrap injector on startup
svr.addLifeCycleListener(new AbstractLifeCycle.AbstractLifeCycleListener() {
@Override
public void lifeCycleStarted(LifeCycle event) {
System.out.println("Bootstrapping Guice injector ...");
Guice.createInjector(new GreeterServletModule(),new GreeterAppModule());
}
});
现在,当我们尝试升级到 Jetty 10 时,它说 addLifeCycleListener 不再存在。
解决方法
AbstractLifeCycle.AbstractLifeCycleListener
是一个 EventListener
。
使用LifeCycle.addEventListener(listener)
。
顺便说一下,引导 Guice 的正常方法是扩展 com.google.inject.servlet.GuiceServletContextListener
并将您的扩展添加到 ServletContext
侦听器?
这是 Google 推荐的做法,也是 Google 自己在自己的框架(如 Google App Engine)中初始化 Guice 的方式。
来自 Google Cloud Platform Java 示例项目的示例 - EchoGuiceListener.java
package com.mycompany;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;
public class GreeterGuiceListener extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new GreeterServletModule(),new GreeterAppModule());
}
}
与...
ServletContextHandler contextHandler = new ServletContextHandler()
contextHandler.addEventListener(new GreeterGuiceListener());
// ... other init ...
server.start();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。