- Spring Boot 3.3.4
- Spring Web 6.1.1
- Весна Загрузите 2.7.18
- Spring Web 5.3.31
У нас есть перенесен из среды Spring Boot 2.7.18 в Spring Boot 3.3.4, и мы обнаружили это при использовании WebClient с JettyClientHttpConnector с его соответствующий HttpClient, если вызов идет с заголовком www-authenticate, он зависает, совершая бесконечные вызовы, и мы никогда не получаем от него правильного ответа.
Все это отлично работало в версии Spring Boot 2, где при получении вызова он отвечал без каких-либо проблем.
Мы пытались определить соединитель самым простым способом, но это всегда прерывается в случае получения этого заголовка.
Примеры и код
Мы провели тест, просто сообщив WebClient, что коннектор, который мы собираемся использовать, — JettyClientHttpConnector. p>
Код: Выделить всё
WebClient client =
WebClient.builder()
.baseUrl("your-url-with-www-authenticate-header-in-response")
.clientConnector(new JettyClientHttpConnector())
.build();
p>
Код: Выделить всё
onFillableFail SslConnection@10ac4a81::SocketChannelEndPoint@4d09e077[{l=null,r=null,CLOSED,fill=-,flush=-,to=7/30000}{io=1/1,kio=-1,kro=-1}]->[SslConnection@10ac4a81{NOT_HANDSHAKING,eio=-1/-1,di=-1,fill=INTERESTED,flush=IDLE}~>{l=null,r=null,CLOSED,fill=FI,flush=-,to=30027/30000}=>HttpConnectionOverHTTP@46f46e11(l:null r:null,closed=true)=>HttpChannelOverHTTP@11d2c7ca(exchange=null)[send=HttpSenderOverHTTP@4f015fae(req=QUEUED,failure=null)[HttpGenerator@3d8bec8d{s=START}],recv=HttpReceiverOverHTTP@69f1010a(ex=null,rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]]
java.nio.channels.ClosedChannelException: null
at org.eclipse.jetty.io.FillInterest.onClose(FillInterest.java:147)
at org.eclipse.jetty.io.AbstractEndPoint.onClose(AbstractEndPoint.java:336)
at org.eclipse.jetty.io.SelectableChannelEndPoint.onClose(SelectableChannelEndPoint.java:165)
at org.eclipse.jetty.io.AbstractEndPoint.onClose(AbstractEndPoint.java:326)
at org.eclipse.jetty.io.AbstractEndPoint.doOnClose(AbstractEndPoint.java:253)
at org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:217)
at org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:200)
at org.eclipse.jetty.io.ssl.SslConnection$SslEndPoint.disconnect(SslConnection.java:1399)
at org.eclipse.jetty.io.ssl.SslConnection$SslEndPoint.doShutdownOutput(SslConnection.java:1381)
at org.eclipse.jetty.io.ssl.SslConnection$SslEndPoint.doClose(SslConnection.java:1449)
at org.eclipse.jetty.io.AbstractEndPoint.doOnClose(AbstractEndPoint.java:248)
at org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:217)
at org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:200)
at org.eclipse.jetty.client.transport.internal.HttpConnectionOverHTTP.close(HttpConnectionOverHTTP.java:298)
at org.eclipse.jetty.client.transport.internal.HttpConnectionOverHTTP.onIdleExpired(HttpConnectionOverHTTP.java:237)
at org.eclipse.jetty.io.ssl.SslConnection.onIdleExpired(SslConnection.java:371)
at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:389)
at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:172)
at org.eclipse.jetty.io.IdleTimeout.idleCheck(IdleTimeout.java:113)
Код: Выделить всё
[DEBUG] [ o.e.j.u.t.ReservedThreadExecutor: 348 ] waiting for task
[DEBUG] [ com.zaxxer.hikari.pool.HikariPool: 405 ] HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
[DEBUG] [ com.zaxxer.hikari.pool.HikariPool: 510 ] HikariPool-1 - Fill pool skipped, pool has sufficient level or currently being filled.
[DEBUG] [ o.e.j.util.thread.QueuedThreadPool: 1015 ] Evict check, period=60000ms QueuedThreadPool[HttpClient@7218bb00]@42681628{STARTED,8
Подробнее здесь: [url]https://stackoverflow.com/questions/79290930/the-www-authenticate-header-breaks-jettyclienthttpconnector[/url]
Мобильная версия