Steps to reproduce

  1. Install Wildfly from scratch
  2. Add a new application user test with password test to standalone\configuration\application-users.properties

    ./add-user.sh -a -u test -p test -g testUserRole
    

  3. Launch Wildfly using bin/standalone.bat
  4. Deploy the attached web-application attached helloworld.war
  5. With the following TestHttp2Client.java Java client:

    import java.net.Authenticator;
    import java.net.PasswordAuthentication;
    import java.net.URI;
    import java.net.http.HttpClient;
    import java.net.http.HttpClient.Version;
    import java.net.http.HttpRequest;
    
    public class TestHttp2Client {
    
    	public static void main(String[] args) throws Throwable {
    		System.setProperty("jdk.httpclient.HttpClient.log","all");
    	
    		Authenticator auth = new Authenticator() {
    		    @Override
    		    protected PasswordAuthentication getPasswordAuthentication() {
    		      return new PasswordAuthentication("test","test".toCharArray());
    		    }
    		};
    		
    		HttpRequest rq = HttpRequest.newBuilder(new URI("http://localhost:8080/helloworld/index.jsp")).GET().build();
    		HttpClient client = HttpClient.newBuilder().version(Version.HTTP_2).authenticator(auth).build();		
    		HttpResponse<String> response = client.send(rq, BodyHandlers.ofString());
    		System.out.println(response);
    	}	
    }
    

  6. Compile and run the class with JDK-11:

    javac TestHttp2Client.java
    java javac TestHttp2Client.java
    
  7. Check the communication error:

    ERROR: java.io.IOException: /127.0.0.1:53984: GOAWAY received
    	at java.net.http/jdk.internal.net.http.Http2Connection.handleGoAway(Http2Connection.java:985)
    	at java.net.http/jdk.internal.net.http.Http2Connection.handleConnectionFrame(Http2Connection.java:853)
    	at java.net.http/jdk.internal.net.http.Http2Connection.processFrame(Http2Connection.java:724)
    	at java.net.http/jdk.internal.net.http.frame.FramesDecoder.decode(FramesDecoder.java:155)
    	at java.net.http/jdk.internal.net.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:232)
    	at java.net.http/jdk.internal.net.http.Http2Connection.asyncReceive(Http2Connection.java:649)
    	at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.processQueue(Http2Connection.java:1275)
    	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
    	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
    	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    	at java.base/java.lang.Thread.run(Thread.java:834)