代码之家  ›  专栏  ›  技术社区  ›  pronane

将8号码头升级为9号码头

  •  1
  • pronane  · 技术社区  · 6 年前

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

    SslSelectChannelConnector已被删除,从我所看到的httpConfiguration with secureRequestCustomizer将取代它。

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

    setRequestBufferSize

    设置响应缓冲大小

    集合接受器

    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来代替上述内容?

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

    1 回复  |  直到 6 年前
        1
  •  6
  •   Joakim Erdfelt    6 年前

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

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

    SslSelectChannelConnector已被删除,从我所看到的httpConfiguration with secureRequestCustomizer将取代它。

    欢迎来到协议的新世界。

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

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

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

    这个 ConnectionFactory 确定。

    这个 HttpConfiguration 确定HTTP级别行为的工作方式。

    请参见: https://stackoverflow.com/a/30191878/775715 用于说明。

    请参见: embedded-jetty examples 这就是用途。从开始 LikeJettyXml.java .

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

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

    setRequestBufferSize

    这已经不存在了,它与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 ,这些没有设置器。

    setMaxIdleTime

    许多的 可用的空闲超时设置(例如:连接器、连接、端点、线程、线程池、异步上下文、读、写、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,我们建议您计划增加线程池需求(由于协议的性质)