从码头7.6迁移到9.4.7

时间:2017-12-15 13:30:20

标签: jetty embedded-jetty

我在我的一个项目中使用了jetty 7.6.5版本,现在我们要升级到jetty 9.4.7。并发现在9.4.7版本中删除或更改了多个类。
示例:

httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
ExecutorThreadPool pool = new ExecutorThreadPool(execSvc);
httpClient.setThreadPool(pool); httpClient.setTimeout(1000);

此代码不适用于jetty 9.请帮助解决问题

1 个答案:

答案 0 :(得分:0)

让我们先回答你的问题:

  • 连接器类型的存在方式与Jetty 7.x中的方式不同。默认为基于NIO。
  • Executors / ThreadPools只能在构造函数上设置。 (不要设置小线程池!)
  • 你可以从HttpClient本身设置很多种超时,你想要空闲超时吗?连接超时? DNS查找超时?等等...查看the javadoc了解详情。
  • 还有每个请求超时可用。再次,请查看the javadoc,了解您想要的详细信息。

从Jetty 7.6.x系列到9.4.x系列是一个巨大的跳跃。您正在跳过将近8年的重大开发并改变您的使用方式。 (7.x是2009年年份至9.4.x是2017年新增的)

您过去使用的技术和机制可能已不再存在。

这是因为HttpClient已经针对HTTP / 1.1,HTTP / 2,ALPN,Unix Socket,FCGI,WebSocket等进行了大量更新。

最重要的是将新的HttpClient视为Web浏览器,启动它一次,让它保持运行,根据需要执行任意数量的请求。你可以为自己做的最糟糕的事情是启动它,执行一两个请求,然后停止它。不支持这种用法,并且可能导致内存/线程/等的奇怪问题。首次需要时启动它,不要停止/关闭HttpClient实例,直到应用程序停止。