0 Replies Latest reply on Jun 12, 2019 5:44 AM by michaelhansenonecom

    Remote EJB calls


      I am currently in the process of upgrading a WF 13 -> WF 16 and Java 8 -> Java 11.


      We have an environment with several WF servers talking remotely to each other using Apache CXF web services. When trying to upgrade to Java 11/WF16 that stopped working, as the WF version is <3.3.


      I am now trying to rewrite our connection to use JNDI instead for remote calls, and that is working fine if I only calls remotely on a single server, but the moment I try to call EJB's on other WF servers I gets an error

      (classnames, servers passwords changed):



           private void testRemoteCall() {

                  Object remote = connectRemote("TestEJB", "test", TestRemote.class.getName());

                  if (remote != null) {

                      TestRemote testEJB = (TestRemote) remote;

                      String output =  testEJB.getDate("input");

                      logger.info("Found: " + output);

                  } else {

                      logger.error("Could not find remote interface");




          private Object connectRemote(String beanName, String appName, String viewClassName) {

              try {

                  final Hashtable jndiProperties = new Hashtable();

                  jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");

                  final Context context = new InitialContext(jndiProperties);

                  final String moduleName = appName + "-ejb-impl";

                  final String distinctName = "";

                  String lookupUrl = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName;


                  return context.lookup(lookupUrl);

              } catch (Exception e) {

                  logger.error("Lookup error", e);


              return null;




      2019-06-12 09:19:33,412 ERROR Y5lO8vX7        1   mih [default task-1] [TestRemoteCallServlet] Write error:

      javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "test/test-ejb-impl/TestEJB", view is interface com.one.test.TestRemote, affinity is None


           Suppressed: javax.security.sasl.SaslException: DIGEST-MD5: Server rejected authentication


      Client WF standalone-full.xml:


              <property name="jboss.bind.address" value=""/>


                 <security-realm name="crm">


                          <secret value="ABCDEFG"/>




      <subsystem xmlns="urn:jboss:domain:ejb3:5.0">


                  <remote connector-ref="http-remoting-connector" thread-pool-name="default">


                          <option name="READ_TIMEOUT" value="${prop.remoting-connector.read.timeout:20}" type="xnio"/>

                          <option name="MAX_OUTBOUND_MESSAGES" value="1234" type="remoting"/>




      <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">


              <socket-binding name="http" port="${jboss.http.port:8080}"/>


              <outbound-socket-binding name="server2" >

                  <remote-destination host="server2.test.one.com" port="8080"/>




      Any idea of what I am doing wrong or missing?