将 Jetty 8 升级到 Jetty 9

pro*_*ane 1 java eclipse jetty embedded-jetty

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

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

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

设置请求缓冲区大小

设置响应缓冲区大小

设置接受者

设置最大空闲时间

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);
Run Code Online (Sandbox Code Playgroud)

哪里或哪个 API 用于代替上述 API?

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

Joa*_*elt 6

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

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

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

欢迎来到协议的新世界。

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

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

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

ConnectionFactory确定。

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

有关说明,请参阅:https : //stackoverflow.com/a/30191878/775715

请参阅:使用的嵌入式码头示例。开始LikeJettyXml.java

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

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

设置请求缓冲区大小

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

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

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

设置响应缓冲区大小

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

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

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

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

设置接受者

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

设置最大空闲时间

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

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

ServerConnector.setIdleTimeout(long)

HttpConfiguration.setIdleTimeout(long)

QueuedThreadPool.setIdleTimeout(int)

SessionHandler 不再有 getSessionManager() 方法。

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

看: OneServletContextWithSession.java

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

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

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

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