NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator ... UpgradeFailedException: Invalid response code 200 in JBoss EAP 7

Solution Unverified - Updated

Environment

Red Hat JBoss Enterprise Application Platform (EAP) 7.2

Issue

We have a standalone client that is trying to invoke EJBs on the https connector port 8443 and it is failing with this exception:

     [java] javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/ejb-ssl/Hello", view is interface com.jboss.examples.ejb.Hello, affinity is None
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContextERROR [org.xnio.listener] XNIO001007: A channel event listener threw an exception: java.lang.IllegalArgumentException
     [java] 	at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:202)
     [java] 	at org.xnio.Buffers.copy(Buffers.java:236)
     [java] 	at org.xnio.conduits.PushBackStreamSourceConduit$BufferConduit.read(PushBackStreamSourceConduit.java:130)
     [java] 	at org.xnio.conduits.PushBackStreamSourceConduit.read(PushBackStreamSourceConduit.java:52)
     [java] 	at org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
     [java] 	at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:410)
     [java] 	at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:400)
     [java] 	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
     [java] 	at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
     [java] 	at o.getResult(EJBClientInvocationContext.java:613)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocatiorg.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89)
     [java] 	at org.xnio.nio.NioHandle$1.run(NioHandle.java:50)
     [java] 	at org.xnContext.java:544)
     [java] 	at org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientIntercnio.nio.WorkerThread.safeRun(WorkerThread.java:612)
     [java] 	at org.xnio.nio.WorkerThread.run(WorkerThread.java:479)
     [java] 
     [java] INFO  [HelloClienteptor.java:57)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:615)
     [java] 	at org.jboss.] Test lookup: ejb:/ejb-ssl/Hello!com.jboss.examples.ejb.Hello -> failed
     [java] ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:544)
     [java] 	at org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:148)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:615)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:544)
     [java] 	at org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:124)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:615)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:544)
     [java] 	at org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:85)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:615)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:544)
     [java] 	at org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:212)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:615)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:544)
     [java] 	at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:986)
     [java] 	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:191)
     [java] 	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:125)
     [java] 	at com.sun.proxy.$Proxy0.sayHello(Unknown Source)
     [java] 	at com.jboss.examples.ejb.HelloClient.test(HelloClient.java:40)
     [java] 	at com.jboss.examples.ejb.HelloClient.main(HelloClient.java:34)
     [java] 	Suppressed: org.xnio.http.UpgradeFailedException: Invalid response code 200
     [java] 		at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:471)
     [java] 		at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:400)
     [java] 		at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
     [java] 		at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
     [java] 		at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89)
     [java] 		at org.xnio.nio.WorkerThread.run(WorkerThread.java:591)
     [java] 		at ...asynchronous invocation...(Unknown Source)
     [java] 		at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:599)
     [java] 		at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:565)
     [java] 		at org.jboss.remoting3.ConnectionInfo$None.getConnection(ConnectionInfo.java:82)
     [java] 		at org.jboss.remoting3.ConnectionInfo.getConnection(ConnectionInfo.java:55)
     [java] 		at org.jboss.remoting3.EndpointImpl.doGetConnection(EndpointImpl.java:499)
     [java] 		at org.jboss.remoting3.EndpointImpl.getConnectedIdentity(EndpointImpl.java:445)
     [java] 		at org.jboss.remoting3.Endpoint.getConnectedIdentity(Endpoint.java:123)
     [java] 		at org.jboss.remoting3.Endpoint.getConnectedIdentity(Endpoint.java:136)
     [java] 		at org.jboss.remoting3.Endpoint.getConnection(Endpoint.java:213)
     [java] 		at org.jboss.ejb.client.legacy.RemotingLegacyConfiguration.getConfiguredEndpoint(RemotingLegacyConfiguration.java:99)
     [java] 		at org.jboss.remoting3.ConfigurationEndpointSupplier$Holder.lambda$static$0(ConfigurationEndpointSupplier.java:58)
     [java] 		at java.security.AccessController.doPrivileged(Native Method)
     [java] 		at org.jboss.remoting3.ConfigurationEndpointSupplier$Holder.<clinit>(ConfigurationEndpointSupplier.java:45)
     [java] 		at org.jboss.remoting3.ConfigurationEndpointSupplier.get(ConfigurationEndpointSupplier.java:84)
     [java] 		at org.jboss.remoting3.ConfigurationEndpointSupplier.get(ConfigurationEndpointSupplier.java:40)
     [java] 		at org.wildfly.common.context.ContextManager.getPrivileged(ContextManager.java:286)
     [java] 		at org.jboss.remoting3.Endpoint.getCurrent(Endpoint.java:81)
     [java] 		at org.jboss.ejb.protocol.remote.RemotingEJBDiscoveryProvider.<init>(RemotingEJBDiscoveryProvider.java:105)
     [java] 		at org.jboss.ejb.protocol.remote.RemoteTransportProvider.notifyRegistered(RemoteTransportProvider.java:43)
     [java] 		at org.jboss.ejb.client.EJBClientContext.<init>(EJBClientContext.java:275)
     [java] 		at org.jboss.ejb.client.EJBClientContext$Builder.build(EJBClientContext.java:788)
     [java] 		at org.jboss.ejb.client.ConfigurationBasedEJBClientContextSelector.loadConfiguration(ConfigurationBasedEJBClientContextSelector.java:80)
     [java] 		at org.jboss.ejb.client.ConfigurationBasedEJBClientContextSelector.<clinit>(ConfigurationBasedEJBClientContextSelector.java:61)
     [java] 		at org.jboss.ejb.client.EJBClientContext.getDefault(EJBClientContext.java:108)
     [java] 		at org.wildfly.common.context.ContextManager.getPrivileged(ContextManager.java:286)
     [java] 		at org.jboss.ejb.client.EJBClientContext.getCurrent(EJBClientContext.java:798)
     [java] 		at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:174)
     [java] 		... 4 more

Resolution

Make sure the client application's truststore has added the server's certificate so that it trusts it and can invoke the server.
Make sure the client is configured to use remote+https or https-remoting protocol.
Make sure the server side remoting subsystem connector is configured to use the https connector instead of the default

        <subsystem xmlns="urn:jboss:domain:remoting:4.0">
            <http-connector name="http-remoting-connector" connector-ref="https" security-realm="ApplicationRealm"/>
        </subsystem>

Related Solutions:

How can I configure JBoss EAP 7.1 so that EJB connections use 1-way SSL with PicketBox legacy security?
How can I configure JBoss EAP 7.1 so that EJB connections use 2-way SSL with PicketBox legacy security?
How configure an EJB client in EAP 7.1+

Components
Category

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.