如何使用Spring WebClient与Jetty,而不是Netty?

8
根据文档,使用Spring Reactive WebClient与不同的服务器(如Netty)是可行的:

WebClient提供了一个比HTTP客户端库更高级的API。默认情况下,它使用Reactor Netty,但可以通过不同的ClientHttpConnector进行插件化。

然而,我未能找到如何实现这一点的方法。如果我只是像这样将依赖项从Netty更改为Jetty:
compile('org.springframework.boot:spring-boot-starter-webflux') {
       exclude group: 'org.springframework.boot', module: 'spring-boot-starter-reactor-netty'
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty', version: '2.0.0.M5'

我的应用程序将无法启动:

2017-10-30 15:40:43.328 ERROR 20298 --- [  restartedMain] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: reactor/ipc/netty/http/client/HttpClient

显然我需要做更多的事情。但是这个 github问题 给我印象,WebClient 不能在没有 Netty 的情况下使用。

是否有可能替换 WebClient 的 Netty 实现?

2个回答

11

有什么想法可以针对相同迁移进行基于SSL的请求更改吗? - damndemon
1
@damndemon 我没有做过那个,但是这段代码片段可能对你有用: https://sslcontext-kickstart.com/client/spring-webclient-jetty.html - rgrebski

3

目前,在Spring Framework中,WebClient只有一种可用的ClientHttpConnector实现,它是由Reactor Netty提供支持的。这就解释了当前的情况 - 使用WebClient意味着您需要将Reactor Netty作为依赖项。

请注意,关于支持Jetty Client作为替代方案的问题已经存在,详见SPR-15092


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接