jetty - 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();
推荐阅读
- amazon-web-services - AWS AppSync 列表查询在控制台和代码中出现 504 错误
- jenkins - 运行 Terraform 维护插件的 Jenkins 作业
- google-cloud-platform - 如何在 BigQuery 中提取年月日?
- angular - ionic:如何使用 push 将值输入到 Angular 中
- mongodb - 仅每个分片键(分区键)的 Cosmos DB 值唯一性点
- android - Android 应用程序运行失败,出现“重复条目:META-INF/services”错误
- git - Github - 一个存储库中的目录作为单独的存储库
- c++ - C ++中枚举的前向声明给出范围错误?
- r - 在 facet_wrap() 中更改标签时使用上标
- python - 如何在 Windows 10 中为 python 3.9 安装 pygame?