Der www-authenticate-Header unterbricht JettyClientHttpConnectorJava

Java-Forum
Anonymous
 Der www-authenticate-Header unterbricht JettyClientHttpConnector

Post by Anonymous »

Umgebung
  • Spring Boot 3.3.4
  • Spring Web 6.1.1
Alte Umgebung, in der es betrieben wurde
  • Frühling Booten Sie 2.7.18
  • Spring Web 5.3.31
Kontext
Wir haben von einer Spring Boot 2.7.18-Umgebung zu Spring Boot 3.3.4 migriert und wir haben festgestellt, dass bei Verwendung eines WebClient mit einem JettyClientHttpConnector mit dessen jeweiligen HttpClient: Falls der Anruf einen www-authenticate-Header enthält, bleibt er bei Anrufen endlos hängen und wir bekommen nie eine korrekte Antwort.
Das hat alles funktioniert perfekt in der Spring Boot 2-Version, wo es beim Empfang des Anrufs ohne Probleme reagierte.
Wir haben versucht, den Connector so einfach wie möglich zu definieren, aber er bricht immer ab. im Falle des Empfangs dieses Headers.
Beispiele und Code
Wir haben den Test durchgeführt, indem wir einfach WebClient mitgeteilt haben, dass der Connector, den wir verwenden werden, JettyClientHttpConnector ist.
WebClient client =
WebClient.builder()
.baseUrl("your-url-with-www-authenticate-header-in-response")
.clientConnector(new JettyClientHttpConnector())
.build();

Wenn Sie versuchen, einen Aufruf an einen Endpunkt zu tätigen, der den Header www-authenticate zurückgibt, können Sie feststellen, dass er hängen bleibt und nach Ablauf des Timeouts diesen Fehler auslöst:
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)

Außerdem scheint der Anruf wiederholt zu werden, bis schließlich der Fehler auftritt, aber der Anruf bleibt hängen und wird nie gelöst.
[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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post