将 Jetty 8 升级到 Jetty 9

2023-12-03

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

SslSelectChannelConnector 已被删除,从我可以看到 httpConfiguration 和 secureRequestCustomizer 取代了它。

但有很多方法我都找不到。例如

设置请求缓冲区大小

设置响应缓冲区大小

设置接受器

设置最大空闲时间

SessionHandler 不再具有 getSessionManager() 方法。

此外,queueThreadPool 不再具有 setMaxQueued(int ),并且 JettyServer 不再具有这两个方法: setThreadPool(队列线程池) 设置GracefulShutdown(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 来代替上述内容?

还有是否有任何自定义的东西在运行时停止工作,这不是很容易找到/看到的。


提醒:Jetty 版本控制(自 1995 年起)<servlet_support>.<major_version>.<minor_version>

您正在进行从 8.1 到 9.4 的主要版本升级(这是 6 个主要版本!)。由此你会看到巨大的变化。

SslSelectChannelConnector 已被删除,从我可以看到 httpConfiguration 和 secureRequestCustomizer 取代了它。

欢迎来到协议的新世界。

不再有任何协议特定连接器的概念。

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

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

The ConnectionFactory决定了。

The HttpConfiguration确定 HTTP 级别的行为如何发挥作用。

See: https://stackoverflow.com/a/30191878/775715用于描述。

See: 嵌入式码头示例这就是使用。从...开始LikeJettyXml.java.

See: 嵌入式码头食谱了解更多示例。

但有很多方法我都找不到。例如

设置请求缓冲区大小

这个已经不存在了,它与 SPDY 和 HTTP/2 不兼容

See HttpConfiguration.setRequestHeaderSize(int)用于控制最大请求标头大小。

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

设置响应缓冲区大小

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

See HttpConfiguration.setResponseHeaderSize(int)用于控制最大响应标头大小。

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

See HttpConfiguration.setOutputBufferSize(int)用于输出缓冲区聚合控制。 (在 HTTP/2 中没有什么意义,实际上只与 HTTP/1.x 相关)

设置接受器

查看各种构造函数ServerConnector,这些没有设置器。

设置最大空闲时间

many您可用的空闲超时设置(例如:连接器、连接、端点、线程、线程池、AsyncContext、读、写、websocket 会话等...)

根据您的问题,这里有一些似乎相关的示例。

See ServerConnector.setIdleTimeout(long)

See HttpConfiguration.setIdleTimeout(long)

See QueuedThreadPool.setIdleTimeout(int)

SessionHandler 不再具有 getSessionManager() 方法。

在过去的 6 个主要版本更新中,会话处理发生了比连接器更大的变化。

See: OneServletContextWithSession.java

此外,queueThreadPool不再有setMaxQueued(int),并且JettyServer不再有这两个方法:setThreadPool(QueueThreadPool) setGracefulShutdown(int)

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Jetty 8 升级到 Jetty 9 的相关文章

随机推荐

  • Now.js 中的会话支持

    Now js 引用 只需在 nowjs initialize 中传递一个连接或快速 http 服务器 this user session 就应该可用 So express require express app module exports
  • 如果任何线程发生异常,则中断所有线程

    我有一个方法名称someTask我必须调用 100 次 并且我正在使用异步编码 如下所示 for int i 0 i lt 100 i futures add CompletableFuture supplyAsync gt someTas
  • Postgres 中的递归 CTE

    我有一个结构如下的表 Employee ID Employee Name Manager ID 而且 对于每个员工 我都需要出示最高管理者的 ID 我的意思是 例如 如果我有 EmployeeID 2 其经理为 3 因此 数字 3 的经理为
  • 如何允许某些特定IP地址访问我的WCF服务

    我有一个 WCF 服务返回 xml 我只想要一个 IP 地址来访问它 例如 10 0 0 5 有人可以告诉我我该怎么做吗 请告诉我除防火墙和 IIS 之外的其他内容 您需要添加 ip 过滤 如下所示 https stackoverflow
  • 将文本值输入到 div 中?

    假设我有这个文本框
  • IPv6 的示例数据?

    是否存在 IPv6 流量的示例数据集 例如Apache 日志还是流量分析日志 或者 是否有人有任何想法如何生成一个或 乐观地 现有工具来生成数据 理想情况下 我希望实际部署的示例地址与该范围内的地址数量和 或来自这些范围的预期流量成比例 即
  • 访问资源目录路径

    看起来 NSBundle mainBundle pathForResource name ofType png 对于 Images xcassets 资产目录内的资产 不返回任何内容 我也尝试过 NSBundle mainBundle pa
  • 雅虎 YQL RSS - 错误请求

    为了使用 jQuery 发出跨域 AJAX 请求 我尝试使用 YQL RSS select from rss where url https www top1000funds com feed most popular posts My c
  • C++中如何将字符串转换为char *?

    我怎样才能转换string in to char 我使用了以下方法 但它不起作用 在运行时它给我以下错误 运行时检查失败 3 变量 url 正在被使用而没有 正在初始化 尽管我已经将其初始化 如下面的代码所示 你能给我举个例子吗 char
  • 具有动态键的对象的 Apollo/GraphQL 字段类型

    假设我的 graphql 服务器想要以 JSON 形式获取以下数据 其中person3 and person5是一些 id persons person3 id person3 name Mike person5 id person5 na
  • JTable 基于隐藏列的排序

    我想排序JTable基于一个隐藏列的行 假设我有一个像这样的 JTable column1 column2 val1 val2 现在我又多了一个被隐藏的column3 我不想显示 当用户单击 Column2 时 它应该根据 Column3
  • 在 JavaScript 中创建特定时区的日期对象并将其转换为 UTC

    我的应用程序当前以以下格式存储特定事件的日期和时间 date 2022 05 06 time 00 00 12 00 AM 每个事件的时间还包含与其关联的时区 如果组织活动的人来自新加坡 那么时区将亚洲 新加坡 当我向与会者发送此活动的日历
  • 使用delphi以编程方式执行防病毒程序

    我编写了一个小应用程序来使用 indy 组件传输文件 现在我想在传输完成后启动防病毒程序来检查文件 下载完成后 如何执行客户端安装的防病毒程序 UPDATE下载文件时我需要实现类似于 Firefox 的功能 然后执行机器中安装的防病毒软件
  • 如何以编程方式设置拨号连接的“自动配置脚本”?

    我在 Internet 选项 gt 连接 中有一个拨号连接 我想以编程方式为其设置一个 自动配置脚本 连接设置之一 将其设置为 LAN 很容易 但我找不到有关将其设置为其他连接的任何信息 好的 我已经解决了 实际上 它以与存储 LAN 设置
  • 如何使用基于 JWT 的身份验证处理文件下载?

    我正在用 Angular 编写一个 Web 应用程序 其中身份验证由 JWT 令牌处理 这意味着每个请求都有一个包含所有必要信息的 身份验证 标头 这对于 REST 调用非常有效 但我不明白应该如何处理后端托管文件的下载链接 文件驻留在托管
  • 混合 JSON-LD CollectionPage 和 Schema.org 的微数据 `hasPart`

    下面的微数据标记工作得很好 Google 的结构化数据测试工具显示一个CollectionPage and WebSite WebPage作为孩子 span a href https springfield xxxx us Official
  • 如何在 C# 中使用 Delphi Dll(带 PChar 类型)

    下面是 Delphi DLL 代码 library Project2 uses SysUtils Classes R res function SimpleConv const s string string var i Integer b
  • PairGrid 与 Seaborn 中的 Hexbin 绘图

    我正在尝试在 Seaborn 网格中获取 hexbin 图 我有以下代码 Works in Jupyter with Python 2 Kernel matplotlib inline import seaborn as sns impor
  • 将图像图标从触摸位置动画到右上角?

    我正在开发 Android 在线购物应用程序 我必须应用一些动画 购物车图像显示在屏幕的右上角 屏幕上的项目列表中的每个项目都带有 添加到购物车 按钮 当用户按下此按钮时 我必须播放动画 我有一个固定图像 它应该从触摸位置动画到 购物车图像
  • 将 Jetty 8 升级到 Jetty 9

    我正在从 jetty 8 升级到 jetty 9 并且遇到了一些 API 中编译失败的问题 SslSelectChannelConnector 已被删除 从我可以看到 httpConfiguration 和 secureRequestCus