0 Replies Latest reply on Jan 28, 2016 2:21 PM by sumanthreddybandi

    Invoking remote ejb in a 2-node wildfly cluster

    sumanthreddybandi

      I am trying to invoke remote ejb on each node of a cluster with nodes node1 & node2, but ejb is invoked on node1 always. Deployed EJB & client code as EAR file in both nodes. Application is running on Wildfly 9 AS.

      EJB code:

      @Remote

      public interface SLSBRemote {

           public void test();

      } 

      @Stateless(mappedName="SLSBEJB")

      public class SLSBEJB implements SLSBRemote {

           @Override

           public void test() {

                try {

                     String nodeName = System.getProperty("jboss.node.name");

                     if(nodeName == null) {

                          nodeName = InetAddress.getLocalHost().getHostName();

                     }

                     log.debug("nodename: "+nodeName);

                } catch (Exception e) { log.error("Error",e); }

           }

      }

      client code:

      public class testEjb {

           //invoking this method from other class. Able to pass node address

           public void testBean(List<String> nodes) {

                Properties properties = new Properties();

                properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");

                Context context;

                for (String node : nodes) {

                     properties.put(Context.PROVIDER_URL,"http-remoting://" + node);

                     try {

                          context = new InitialContext(properties);

                          SLSBRemote slsbRemote=(SLSBEJB)context.lookup(getLookupName());

                          log.debug("node:"+node+"slsbejbobject:"+slsbRemote.hashCode()); slsbRemote.test();

                     } catch (NamingException e) {

                          log.error("Error ", e);

                     }

                }

           }

      }

      In the logs, same object is returned with both nodes. And node1 address sis shown as nodename in both cases.

      node: "node1", binddbejb object: 1276422461

      node: "node2", binddbejb object: 1276422461

      nodename: "node1_address" nodename: "node1_address" (instead of node2_address)

      Please suggest