将 Jetty 8 升级到 Jetty 9
Upgrading Jetty 8 to Jetty 9
我正在从 jetty 8 升级到 jetty 9,并且在某些 API 中遇到了编译失败的一些问题。
SslSelectChannelConnector 已被删除,据我所知,httpConfiguration with secureRequestCustomizer 取代了它。
但是有很多方法我都找不到。例如
setRequestBufferSize
setResponseBufferSize
设置接受器
设置最大空闲时间
SessionHandler 不再有 getSessionManager() 方法。
此外,queueThreadPool 不再有 setMaxQueued(int ),JettyServer 也不再有这两个方法:
setThreadPool(队列线程池)
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被用来代替上面的?
还有一些自定义内容在运行时停止工作,这对 find/see 来说并不明显。
提醒:Jetty 版本控制(自 1995 年起)是 <servlet_support>.<major_version>.<minor_version>
您正在进行从 8.1 到 9.4 的主要版本升级(这是 6 个主要版本!)。因此,您会看到巨大的变化。
The SslSelectChannelConnector has been removed and from what I can see httpConfiguration with secureRequestCustomizer replaces this.
欢迎来到协议的新世界。
不再有任何协议特定连接器的概念。
ServerConnector
是连接器,它没有协议知识,也不需要它。它只是一个到服务器的连接点(甚至不是 TCP/IP 特定的,它可以是 Unix 套接字)。
它的配置决定了连接类型、绑定位置以及客户端连接到该端口后如何协商协议。
ConnectionFactory
确定。
HttpConfiguration
决定了 HTTP 级别行为的运作方式。
请参阅:https://whosebug.com/a/30191878/775715 了解说明。
参见:embedded-jetty examples of this is use. Start with LikeJettyXml.java
。
有关更多示例,请参阅:embedded-jetty-cookbook。
But there are many methods that I cant find on both. For example
setRequestBufferSize
这不再存在,它与 SPDY 和 HTTP/2
不兼容
请参阅 HttpConfiguration.setRequestHeaderSize(int)
以控制最大请求 header 大小。
注意:如果您正在使用 HTTP/2,我们建议您不要将请求 header 大小调整为大于默认大小(出于协议兼容性原因)。
setResponseBufferSize
这不再存在,它与 SPDY 和 HTTP/2 不兼容。
请参阅 HttpConfiguration.setResponseHeaderSize(int)
以控制最大响应 header 大小。
注意:如果您使用 HTTP/2,我们建议您不要将响应 header 大小调整为大于默认大小(出于协议兼容性原因)。
有关输出缓冲区聚合控件,请参阅 HttpConfiguration.setOutputBufferSize(int)
。 (在 HTTP/2 中意义不大,实际上只与 HTTP/1.x 相关)
setAcceptors
查看 ServerConnector
的各种构造函数,没有这些构造函数。
setMaxIdleTime
有许多空闲超时设置可供您使用(例如:连接器、连接、端点、线程、线程池、AsyncContext、读取、写入、websocket session、等等...)
根据您的问题,这里有一些似乎相关的示例。
见ServerConnector.setIdleTimeout(long)
见HttpConfiguration.setIdleTimeout(long)
见QueuedThreadPool.setIdleTimeout(int)
SessionHandler no longer has a getSessionManager() method.
在过去的 6 个主要版本更新中,Session 处理方式发生了比连接器更大的变化。
参见:OneServletContextWithSession.java
Also the queueThreadPool no longer has a setMaxQueued(int ), and JettyServer no longer has these two methods: setThreadPool(QueueThreadPool) setGracefulShutdown(int)
QueuedThreadPool
中 min/max 的配置是构造函数的一部分。 min/max.
没有设置器
要配置 Server
线程池,请使用允许您传入线程池的构造函数。
注意:如果您使用 HTTP/2,而 html/css/javascript 我们建议您计划增加线程池需求(由于协议的性质)
我正在从 jetty 8 升级到 jetty 9,并且在某些 API 中遇到了编译失败的一些问题。
SslSelectChannelConnector 已被删除,据我所知,httpConfiguration with secureRequestCustomizer 取代了它。
但是有很多方法我都找不到。例如
setRequestBufferSize
setResponseBufferSize
设置接受器
设置最大空闲时间
SessionHandler 不再有 getSessionManager() 方法。
此外,queueThreadPool 不再有 setMaxQueued(int ),JettyServer 也不再有这两个方法: setThreadPool(队列线程池) 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被用来代替上面的?
还有一些自定义内容在运行时停止工作,这对 find/see 来说并不明显。
提醒:Jetty 版本控制(自 1995 年起)是 <servlet_support>.<major_version>.<minor_version>
您正在进行从 8.1 到 9.4 的主要版本升级(这是 6 个主要版本!)。因此,您会看到巨大的变化。
The SslSelectChannelConnector has been removed and from what I can see httpConfiguration with secureRequestCustomizer replaces this.
欢迎来到协议的新世界。
不再有任何协议特定连接器的概念。
ServerConnector
是连接器,它没有协议知识,也不需要它。它只是一个到服务器的连接点(甚至不是 TCP/IP 特定的,它可以是 Unix 套接字)。
它的配置决定了连接类型、绑定位置以及客户端连接到该端口后如何协商协议。
ConnectionFactory
确定。
HttpConfiguration
决定了 HTTP 级别行为的运作方式。
请参阅:https://whosebug.com/a/30191878/775715 了解说明。
参见:embedded-jetty examples of this is use. Start with LikeJettyXml.java
。
有关更多示例,请参阅:embedded-jetty-cookbook。
But there are many methods that I cant find on both. For example
setRequestBufferSize
这不再存在,它与 SPDY 和 HTTP/2
不兼容请参阅 HttpConfiguration.setRequestHeaderSize(int)
以控制最大请求 header 大小。
注意:如果您正在使用 HTTP/2,我们建议您不要将请求 header 大小调整为大于默认大小(出于协议兼容性原因)。
setResponseBufferSize
这不再存在,它与 SPDY 和 HTTP/2 不兼容。
请参阅 HttpConfiguration.setResponseHeaderSize(int)
以控制最大响应 header 大小。
注意:如果您使用 HTTP/2,我们建议您不要将响应 header 大小调整为大于默认大小(出于协议兼容性原因)。
有关输出缓冲区聚合控件,请参阅 HttpConfiguration.setOutputBufferSize(int)
。 (在 HTTP/2 中意义不大,实际上只与 HTTP/1.x 相关)
setAcceptors
查看 ServerConnector
的各种构造函数,没有这些构造函数。
setMaxIdleTime
有许多空闲超时设置可供您使用(例如:连接器、连接、端点、线程、线程池、AsyncContext、读取、写入、websocket session、等等...)
根据您的问题,这里有一些似乎相关的示例。
见ServerConnector.setIdleTimeout(long)
见HttpConfiguration.setIdleTimeout(long)
见QueuedThreadPool.setIdleTimeout(int)
SessionHandler no longer has a getSessionManager() method.
在过去的 6 个主要版本更新中,Session 处理方式发生了比连接器更大的变化。
参见:OneServletContextWithSession.java
Also the queueThreadPool no longer has a setMaxQueued(int ), and JettyServer no longer has these two methods: setThreadPool(QueueThreadPool) setGracefulShutdown(int)
QueuedThreadPool
中 min/max 的配置是构造函数的一部分。 min/max.
要配置 Server
线程池,请使用允许您传入线程池的构造函数。
注意:如果您使用 HTTP/2,而 html/css/javascript 我们建议您计划增加线程池需求(由于协议的性质)