当前位置: 首页 > 面试题库 >

将Jetty 8升级到Jetty 9

蓝慈
2023-03-14
问题内容

我正在从码头8升级到码头9,并且遇到了一些API中编译失败的问题。

SslSelectChannelConnector已被删除,从我看到的带有secureRequestCustomizer的httpConfiguration替换了它。

但是我在这两种方法上找不到很多方法。例如

setRequestBufferSize

setResponseBufferSize

setAcceptors

setMaxIdleTime

SessionHandler不再具有getSessionManager()方法。

同样,queueThreadPool不再具有setMaxQueued(int),而JettyServer不再具有以下两种方法:setThreadPool(QueueThreadPool)setGracefulShutdown(int)

编辑:不推荐使用SslSelectChannelConnector。将SelectChannelConnector与SslContextFactory一起使用。

jettyServer.setThreadPool(threadPool);  // --> threadPool is set in the constructor new Server(QueueThreadPool)
jettyServer.setGracefulShutdown(5000);  // --> jettyServer.setStopTimeout(5000);
jettyServer.setConnectors(new Connector[] { connector });  // -->  ServerConnector which takes https_config
jettyServer.setSendServerVersion(false); // -->  https_config.setSendServerVersion(false);

在哪里或使用哪个API代替上述内容?

还有一些自定义的东西在运行时停止工作,这些东西很难找到/看到。


问题答案:

提醒:自1995年以来,Jetty版本控制是 <servlet_support>.<major_version>.<minor_version>

您正在将主要版本从8.1升级到9.4(这是6个主要版本!)。因此,您看到了巨大的变化。

SslSelectChannelConnector已被删除,从我看到的带有secureRequestCustomizer的httpConfiguration替换了它。

欢迎来到协议的新世界。

不再存在协议专用连接器的任何概念。

ServerConnector是连接器,它没有协议知识,也不需要它。它只是服务器的连接点(甚至不是特定于TCP /
IP的连接点,也可能是Unix套接字)。

它的配置确定了连接类型,绑定位置以及客户端连接到该端口后如何协商协议。

ConnectionFactory确定。

HttpConfiguration决定如何HTTP级别行为功能。

参见:嵌入式码头的例子。从开始LikeJettyXml.java

有关更多示例,请参见:embedded-jetty-cookbook。

但是我在这两种方法上找不到很多方法。例如

setRequestBufferSize

不再存在,它与SPDY和HTTP / 2不兼容

有关HttpConfiguration.setRequestHeaderSize(int)控制最大请求标头大小的信息,请参见。

注意:如果使用的是HTTP / 2,建议您不要将请求标头的大小调整为大于默认值(出于协议兼容性的原因)。

setResponseBufferSize

它不再存在,它与SPDY和HTTP / 2不兼容。

有关HttpConfiguration.setResponseHeaderSize(int)控制最大响应标头大小的信息,请参见。

注意:如果使用的是HTTP / 2,建议您不要将响应头的大小调整为大于默认值(出于协议兼容性的原因)。

有关HttpConfiguration.setOutputBufferSize(int)输出缓冲区聚合控件的信息,请参见。(在HTTP / 2中意义不大,实际上仅与HTTP / 1.x相关)

setAcceptors

请参阅的各种构造函数ServerConnector,这些没有设置器。

setMaxIdleTime

您可以使用 许多 空闲超时设置(例如:连接器,连接,端点,线程,线程池,AsyncContext,读取,写入,websocket会话等)。

根据您的问题,以下是一些相关的示例。

看到
ServerConnector.setIdleTimeout(long)

看到
HttpConfiguration.setIdleTimeout(long)

看到
QueuedThreadPool.setIdleTimeout(int)

SessionHandler不再具有getSessionManager()方法。

在过去的6个主要版本更新中,会话处理已比连接器进行了更大的更改。

看到:
OneServletContextWithSession.java

同样,queueThreadPool不再具有setMaxQueued(int),而JettyServer不再具有以下两种方法:setThreadPool(QueueThreadPool)setGracefulShutdown(int)

最小/最大输入的配置QueuedThreadPool是构造函数的一部分。最小/最大没有设置器。

要配置Server线程池,请使用允许您传入线程池的构造函数。

注意:如果您使用的是HTTP / 2和html / css / javascript,我们建议您计划增加线程池需求(由于协议的性质)



 类似资料:
  • 问题内容: 我正在尝试将Eclipse环境更新为Java8。我安装了jdk和jre版本8。我也这样做: https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler 然后在项目中->属性-> Java构建路径-> JRE系统库->编辑->执行环境-> JavaSE-1.8(unbound),这是名称中唯一带有Java 8的选项。但是,

  • 我需要将spring boot从2.3.7升级到2.4.1。释放。当我更新pom文件时,在spring-security-oauth2依赖项(版本2.4.1.RELEASE)中出现错误。在升级spring版本spring-security-oauth2 2.4.1之前。版本,与springboot 2.3.7配合良好。释放 我的pom文件依赖项: 当我尝试运行我的应用程序时,这是我的例外- 如何更

  • 我正在将我的django项目从1.8升级到2.2.0(使用virtualenv中的Python 3.6)。我做了以下更改。 将on_delete添加到所有外键字段 将url反向导入更改为来自django。URL反向导入 在所有应用程序的url文件中包含路径/re_path而不是url 将设置文件中的MIDDLEWARE_CLASSES导入更改为MIDDLEWARE={} 我试图运行服务器,但它仍然

  • 我面临的问题与更新facebook SDK从4.7到4.35 实现'com。脸谱网。android:facebook android sdk:4.35.0' 错误输出为 无法复制C:\用户\泰\下载\项目\karufx-android-更新\app\构建\中间体\转换\desugar\调试\138.jar备份文件夹,构建将继续,但下次修改此文件时将导致冷交换。 和 意外输入:ImmutableJa

  • 我正在尝试将单节点Cassandra集群从1.1.5升级到2.0.x。 我的生产服务器运行在Linux上。我将数据文件夹拉到Windows框中,保留键空间,以及我感兴趣的一个键空间,并在启动Cassandra后删除其余的键空间。 我升级并测试了: 1.1.5->1.2.0 1.2.0->1.2.8 1.2.8->1.2.9 在1.x版本中,一切看起来都很好。 当试图升级到2.0.7时,我遇到了一个

  • 我正在尝试将log4j升级到log4j2。我试图升级的特定代码行是: 静态字段在新的中不再可用。相反,似乎使用了静态方法来访问优先级int值,可以将指定为。 但是,此方法还需要指定。在调用时,如何知道要指定哪个? 旧优先级:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/priority.html 新优先级:https:/