Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-11148

EJB over HTTP (H2C protocol) does not work with mod_cluster

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 7.1.0.DR19
    • 7.1.0.DR18
    • mod_cluster, Undertow
    • None

      There is an issue when you try to sent ejb requests via http2c. The requests fails. Only first comes through as you can see below. Http1 works fine.

      One should be able to reproduce it with
      [https://github.com/jmartisk/mock-artifacts/tree/master/ejbclient/eap7.1-httpclient-clustered-undertowlb|eap7.1-httpclient-clustered-undertowlb]. My test is similar i just use different artifacts.

          JavaArchive[] libs = Maven.resolver().resolve("org.wildfly.wildfly-http-client:wildfly-http-ejb-client:1.0.0.CR4").withTransitivity().as(JavaArchive.class)
          JavaArchive[] libs2 = Maven.resolver().resolve("org.jboss.xnio:xnio-nio:3.5.0.Beta2").withTransitivity().as(JavaArchive.class)
      

      You`ll have to enable http2 on http-listener(balancer and node) and mod-cluster filter

      My app sent multiple requests

              EjbJvmRouteInterface bean = (EjbJvmRouteInterface)iniCtx.lookup(lookupName);
              try {
                  for (int i = 0; i < TIMES; i++) {
                      System.out.print(bean.getJvmroute() + ";");
                  }
              } finally {
                  iniCtx.close();
              }
      

      *Ejb over http(http2c) request to the backend node *
      This works ok

      [bsikora@localhost client]$ java -cp "*" -Dremote.server.address=192.168.122.206:8080 -Dremote.endpoint.path=/wildfly-services -Dstateful=false noe.common.javatests.EjbviaHttpTest.Client
      May 25, 2017 12:28:54 PM org.wildfly.naming.client.Version <clinit>
      INFO: WildFly Naming version 1.0.0.Beta14
      May 25, 2017 12:28:54 PM org.wildfly.security.Version <clinit>
      INFO: ELY00001: WildFly Elytron version 1.1.0.Beta40
      May 25, 2017 12:28:55 PM org.jboss.ejb.client.EJBClient <clinit>
      INFO: JBoss EJB Client version 4.0.0.Beta25
      May 25, 2017 12:28:55 PM org.xnio.Xnio <clinit>
      INFO: XNIO version 3.5.0.Beta2
      May 25, 2017 12:28:55 PM org.xnio.nio.NioXnio <clinit>
      INFO: XNIO NIO Implementation Version 3.5.0.Beta2
      jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;jboss-eap-7.1-1;
      

      access_log.log

      192.168.122.206 - Bobo [25/May/2017:12:28:55 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:55 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:55 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - Bobo [25/May/2017:12:28:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      

      Ejb over http(http2c) request via mod_cluster filter
      This don't work

      [bsikora@localhost client]$ java -cp "*" -Dremote.server.address=192.168.122.206:8484 -Dremote.endpoint.path=/wildfly-services -Dstateful=false noe.common.javatests.EjbviaHttpTest.Client
      May 25, 2017 1:13:55 PM org.wildfly.naming.client.Version <clinit>
      INFO: WildFly Naming version 1.0.0.Beta14
      May 25, 2017 1:13:55 PM org.wildfly.security.Version <clinit>
      INFO: ELY00001: WildFly Elytron version 1.1.0.Beta40
      May 25, 2017 1:13:56 PM org.jboss.ejb.client.EJBClient <clinit>
      INFO: JBoss EJB Client version 4.0.0.Beta25
      May 25, 2017 1:13:56 PM org.xnio.Xnio <clinit>
      INFO: XNIO version 3.5.0.Beta2
      May 25, 2017 1:13:56 PM org.xnio.nio.NioXnio <clinit>
      INFO: XNIO NIO Implementation Version 3.5.0.Beta2
      jboss-eap-7.1-1;Exception in thread "main" javax.ejb.EJBException: java.io.IOException: UT000103: Http2 stream was reset
      	at org.jboss.ejb.client.EJBInvocationHandler.lambda$invoke$0(EJBInvocationHandler.java:213)
      	at org.jboss.ejb.client.EJBClientContext.performLocatedAction(EJBClientContext.java:707)
      	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:162)
      	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
      	at com.sun.proxy.$Proxy0.getJvmroute(Unknown Source)
      	at noe.common.javatests.EjbviaHttpTest.Client.main(Client.java:27)
      Caused by: java.io.IOException: UT000103: Http2 stream was reset
      	at io.undertow.client.http2.Http2ClientConnection$Http2ReceiveListener.handleEvent(Http2ClientConnection.java:400)
      	at io.undertow.client.http2.Http2ClientConnection$Http2ReceiveListener.handleEvent(Http2ClientConnection.java:347)
      	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
      	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:932)
      	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:913)
      	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
      	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener$1.run(AbstractFramedChannel.java:939)
      	at io.undertow.server.protocol.framed.AbstractFramedChannel$3.run(AbstractFramedChannel.java:231)
      	at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:588)
      	at org.xnio.nio.WorkerThread.run(WorkerThread.java:468)
      

      access_log.log (balancer)

      192.168.122.206 - - [25/May/2017:13:13:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 200 19
      192.168.122.206 - - [25/May/2017:13:13:56 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/2.0" 503 84
      

      access_log.log (node)

      192.168.122.206 - - [25/May/2017:13:15:48 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/1.1" 401 77
      192.168.122.206 - Bobo [25/May/2017:13:15:48 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/1.1" 200 19
      192.168.122.206 - Bobo [25/May/2017:13:15:48 +0200] "POST /wildfly-services/ejb/v1/invoke/-/server/-/StatelessJvmRoute/-/noe.common.javatests.EjbviaHttpTest.EjbJvmRouteInterface/getJvmroute HTTP/1.1" 500 1424
      

              sdouglas1@redhat.com Stuart Douglas (Inactive)
              bsikora Bogdan Sikora (Inactive)
              Bogdan Sikora Bogdan Sikora (Inactive)
              Bogdan Sikora Bogdan Sikora (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: